Pagini recente » Cod sursa (job #86741) | Cod sursa (job #86728) | Cod sursa (job #2059242) | Cod sursa (job #1507067) | Cod sursa (job #1047322)
#include<stdio.h>
char S[10009], A[301], n, i;
int evalAnd();
int evalOr();
int getTerm();
int evalAnd() {
int X = getTerm();
while (S[i + 1] == 'A' && S[i + 2] == 'N' && S[i + 3] == 'D') {
i += 5;
X &= getTerm();
}
return X;
}
int evalOr() {
int X = evalAnd();
while (S[i + 1] == 'O' && S[i + 2] == 'R') {
i += 4;
X |= evalAnd();
}
return X;
}
int getTerm () {
int v = 0;
if (S[i] == 'N' && S[i + 1] == 'O') {
i += 4;
return (!getTerm());
}
if (S[i] == '(') {
i++;
return v = evalOr();
i++;
}
if (S[i] == 'T' && S[i + 1] == 'R') {
i += 4;
return 1;
}
if (S[i] == 'F' && S[i + 1] == 'A') {
i += 5;
return 0;
}
if (S[i] >= 'A' && S[i] <= 'Z') {
v = A[S[i]];
i++;
return v;
}
}
int main () {
freopen ("bool.in", "rt", stdin);
freopen ("bool.out", "wt", stdout);
gets(S+1);
scanf ("%d\n", &n);
while (n) {
char C; scanf ("%c", &C);
A[C] ^= 1;
i = 1;
printf ("%d", evalOr()); n--;
}
return 0;
}