Pagini recente » Cod sursa (job #1189356) | Cod sursa (job #297867) | Cod sursa (job #2196846) | Cod sursa (job #2761019) | Cod sursa (job #1898831)
# include <bits/stdc++.h>
using namespace std;
const int Nmax = 1005;
int Litera[100], i, Q, n, ind;
char s[Nmax], q[105];
string sir;
void normalizare() {
for (int i = 1; i <= n; ++i) {
if (s[i] == 'A' && s[i + 1] == 'N') sir += '&', i += 2;
else
if (s[i] == 'O' && s[i + 1] == 'R') sir += '|', ++i;
else
if (s[i] == 'N' && s[i + 1] == 'O') sir += '!', i += 2;
else
if (s[i] == 'T' && s[i + 1] == 'R') sir += '1', i += 3;
else
if (s[i] == 'F' && s[i + 1] == 'A') sir += '0', i += 4;
else if (isalpha(s[i]) || s[i] == '(' || s[i] == ')') sir += s[i];
}
}
int SAU();
int NOT() {
int nr = 0;
if (sir[ind] == '(') ++ind, nr = SAU(), ++ind;
else if (sir[ind] == '!') ++ind, nr = (NOT() ^ 1);
else if (isalpha(sir[ind])) nr = Litera[sir[ind]], ++ind;
else nr = sir[ind], ++ind;
return nr;
}
int SI() {
int nr = NOT();
while (sir[ind] == '&') ++ind, nr &= NOT();
return nr;
}
int SAU() {
int nr = SI();
while (sir[ind] == '|') ++ind, nr |= SI();
return nr;
}
int main ()
{
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
gets(s + 1), n = strlen(s + 1);
scanf("%d\n", &Q);
gets(q + 1);
sir += ' ';
normalizare();
cerr << sir;
for (i = 1; i <= Q; ++i){
ind = 1, Litera[q[i]] ^= 1;
printf("%d", SAU());
}
printf("\n");
return 0;
}