Pagini recente » Cod sursa (job #876331) | Cod sursa (job #607075) | Cod sursa (job #1365533) | Cod sursa (job #65898) | Cod sursa (job #993379)
Cod sursa(job #993379)
#include <cstdio>
#include <cstring>
using namespace std;
char s[1010],*p;
char str[110];
int val[30];
int fact();
int eval();
int termen();
int fact() {
int res;
if(*p=='(') {
p++;
res=eval();
p++;
}
else if(*p=='T'&&*(p+1)=='R') {
p+=5;
res=1;
}
else if(*p=='F'&&*(p+1)=='A') {
p+=6;
res=0;
}
else if(*p=='N'&&*(p+1)=='O') {
p+=4;
res=!fact();
}
else {
res=val[*p-'A'];
p+=2;
}
return res;
}
int termen() {
int res=fact();
while(*p=='A'&&*(p+1)=='N') {
p+=4;
res=res&fact();
}
return res;
}
int eval() {
int res=termen();
while(*p=='O'&&*(p+1)=='R') {
p+=3;
res=res|termen();
}
return res;
}
int main() {
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
gets(s);
int m;
scanf("%d",&m);
scanf(" %s ",str);
for(int i=0;i<m;i++) {
val[str[i]-'A']=1-val[str[i]-'A'];
p=s;
printf("%d",eval());
}
return 0;
}