Pagini recente » Cod sursa (job #1121406) | Cod sursa (job #2256077) | Cod sursa (job #3222067) | Cod sursa (job #1401789) | Cod sursa (job #1959653)
# 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] - '0', ++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;
}