Pagini recente » Cod sursa (job #1808030) | Cod sursa (job #929513) | Cod sursa (job #3238123) | Cod sursa (job #1157934) | Cod sursa (job #1020889)
#include<stdio.h>
#include<string.h>
const int LMAX = 1000;
bool termen();
bool factor();
char *p,s[LMAX + 5];
bool val[30];
int n;
bool expresie () {
bool res = termen();
while(*p == 'O' && *(p + 1) == 'R') {
p += 3;
res = res | termen();
}
return res;
}
bool termen () {
bool res = factor();
while(*p == 'A' && *(p + 1) == 'N') {
p += 4;
res = res & factor();
}
return res;
}
bool factor () {
bool res;
if(*p == '(') {
++p;
res = expresie();
++p;
}
else
if(*p == 'T' && *(p + 1) == 'R') {
res = 1;
p += 5;
}
else
if(*p == 'F' && *(p + 1) == 'A') {
res = 0;
p += 6;
}
else
if(*p == 'N' && *(p + 1) == 'O') {
p += 4;
res = !factor();
}
else {
res = val[*p - 'A'];
p += 2;
}
return res;
}
int main() {
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
char ch;
int i;
gets(s);
scanf("%d\n",&n);
memset(val,false,sizeof(val));
for(i = 1; i <= n; i++) {
scanf("%c",&ch);
val[ch - 'A'] = !val[ch - 'A'];
p = s;
printf("%d",expresie());
}
return 0;
}