#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int check(char c, char che[]);
int is_enum(char* c, int beg, int end);
int is_log(char* c, int beg, int end);
int main()
{
char* c = "nota";
if (is_log
(c
, 0, l
- 1)) printf("Logical expression was arranged correctly"); else printf("Logical expression wasn't arranged correctly"); return 0;
}
int check(char c, char che[]) {
int n = 0;
for (int i = 0; i < l; i++) {
if (c == che[i]) {
n++;
break;
}
}
return n;
} /*проверка вхождения символа в массив*/
int is_enum(char* c, int beg, int end) {
int n, p, j, k , nbeg;
char op[] = "+-*/";
if ((beg
== end
) && isalnum(c
[beg
])) return 1; if ((isalnum(c
[beg
]) != 0) && (check
(c
[beg
+ 1], op
) != 0)) return is_enum
(c
, beg
+ 2, end
); if (c[beg] == '(') {
p = 0;
for (int i = 0; i <= end; i++) {
if (c[i] == '(') p++;
if (c[i] == ')') p--;
if (p == 0) {
k = i + 1;
nbeg = i + 2;
break;
}
}
if (c != 0) return 0;
if (k < end) {
if (check(c[k], op)) return is_enum(c, beg + 1, k - 2) * is_enum(c, nbeg, end);
}
else {
return is_enum(c, beg + 1, k - 2);
}
}
return 0;
} /*проверка выражений*/
int is_log(char* c, int beg, int end) {
if (check(c[beg], "TtFf")) return 1;
if (check(c[beg], "Aa") && check(c[beg + 1], "Nn") && check(c[beg + 2], "Dd")) return is_enum(c, beg + 3, end);
if (check(c[beg], "Nn") && check(c[beg + 1], "Oo") && check(c[beg + 2], "Tt")) return is_enum(c, beg + 3, end);
if (check(c[beg], "Oo") && check(c[beg + 1], "Rr")) return is_enum(c, beg + 2, end);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8Y3R5cGUuaD4KCmludCBjaGVjayhjaGFyIGMsIGNoYXIgY2hlW10pOwppbnQgaXNfZW51bShjaGFyKiBjLCBpbnQgYmVnLCBpbnQgZW5kKTsKaW50IGlzX2xvZyhjaGFyKiBjLCBpbnQgYmVnLCBpbnQgZW5kKTsKCgppbnQgbWFpbigpCnsKICAgIGNoYXIqIGMgPSAibm90YSI7CiAgICBpbnQgbCA9IHN0cmxlbihjKTsKICAgIGlmIChpc19sb2coYywgMCwgbCAtIDEpKSBwcmludGYoIkxvZ2ljYWwgZXhwcmVzc2lvbiB3YXMgYXJyYW5nZWQgY29ycmVjdGx5Iik7CiAgICBlbHNlIHByaW50ZigiTG9naWNhbCBleHByZXNzaW9uIHdhc24ndCBhcnJhbmdlZCBjb3JyZWN0bHkiKTsKICAgIHJldHVybiAwOwp9CgoKaW50IGNoZWNrKGNoYXIgYywgY2hhciBjaGVbXSkgewogICAgaW50IGwgPSBzdHJsZW4oY2hlKTsKICAgIGludCBuID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbDsgaSsrKSB7CiAgICAgICAgaWYgKGMgPT0gY2hlW2ldKSB7CiAgICAgICAgICAgIG4rKzsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIG47Cn0gIC8q0L/RgNC+0LLQtdGA0LrQsCDQstGF0L7QttC00LXQvdC40Y8g0YHQuNC80LLQvtC70LAg0LIg0LzQsNGB0YHQuNCyKi8KCgppbnQgaXNfZW51bShjaGFyKiBjLCBpbnQgYmVnLCBpbnQgZW5kKSB7CiAgICBpbnQgbiwgcCwgaiwgayAsIG5iZWc7CiAgICBjaGFyIG9wW10gPSAiKy0qLyI7CiAgICBpZiAoKGJlZyA9PSBlbmQpICYmIGlzYWxudW0oY1tiZWddKSkgcmV0dXJuIDE7CiAgICBpZiAoKGlzYWxudW0oY1tiZWddKSAhPSAwKSAmJiAoY2hlY2soY1tiZWcgKyAxXSwgb3ApICE9IDApKSByZXR1cm4gaXNfZW51bShjLCBiZWcgKyAyLCBlbmQpOwogICAgaWYgKGNbYmVnXSA9PSAnKCcpIHsKICAgICAgICAgICAgcCA9IDA7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IGVuZDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoY1tpXSAgPT0gJygnKSBwKys7CiAgICAgICAgICAgICAgICBpZiAoY1tpXSA9PSAnKScpIHAtLTsKICAgICAgICAgICAgICAgIGlmIChwID09IDApIHsKICAgICAgICAgICAgICAgICAgICBrID0gaSArIDE7CiAgICAgICAgICAgICAgICAgICAgbmJlZyA9IGkgKyAyOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChjICE9IDApIHJldHVybiAwOwogICAgICAgICAgICBpZiAoayA8IGVuZCkgewogICAgICAgICAgICAgICAgaWYgKGNoZWNrKGNba10sIG9wKSkgcmV0dXJuIGlzX2VudW0oYywgYmVnICsgMSwgayAtIDIpICogaXNfZW51bShjLCBuYmVnLCBlbmQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIGlzX2VudW0oYywgYmVnICsgMSwgayAtIDIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwp9IC8q0L/RgNC+0LLQtdGA0LrQsCDQstGL0YDQsNC20LXQvdC40LkqLwoKaW50IGlzX2xvZyhjaGFyKiBjLCBpbnQgYmVnLCBpbnQgZW5kKSB7CiAgICBpZiAoY2hlY2soY1tiZWddLCAiVHRGZiIpKSByZXR1cm4gMTsKICAgIGlmIChjaGVjayhjW2JlZ10sICJBYSIpICYmIGNoZWNrKGNbYmVnICsgMV0sICJObiIpICYmIGNoZWNrKGNbYmVnICsgMl0sICJEZCIpKSByZXR1cm4gaXNfZW51bShjLCBiZWcgKyAzLCBlbmQpOwogICAgaWYgKGNoZWNrKGNbYmVnXSwgIk5uIikgJiYgY2hlY2soY1tiZWcgKyAxXSwgIk9vIikgJiYgY2hlY2soY1tiZWcgKyAyXSwgIlR0IikpIHJldHVybiBpc19lbnVtKGMsIGJlZyArIDMsIGVuZCk7CiAgICBpZiAoY2hlY2soY1tiZWddLCAiT28iKSAmJiBjaGVjayhjW2JlZyArIDFdLCAiUnIiKSkgcmV0dXJuIGlzX2VudW0oYywgYmVnICsgMiwgZW5kKTsKICAgIHJldHVybiAwOwp9