Pagini recente » Cod sursa (job #975128) | Cod sursa (job #496644) | Cod sursa (job #2670758) | Cod sursa (job #1206889) | Cod sursa (job #1515335)
#include <cstdio>
using namespace std;
FILE *f=fopen("bool.in", "r");
FILE *g=fopen("bool.out", "w");
char s[1001];
int v[31], poz;
int f4();
int f3();
int f2();
int f1(){
int r=f2(), p;
if(s[poz]==' ') ++poz;
while(s[poz]=='O'&&s[poz+1]=='R'){
poz+=3;
p=f2();
if(s[poz]==' ') ++poz;
if(r+p!=0) r=1;
else r=0;
}
return r;
}
int f2(){
int r=f3(), p;
if(s[poz]==' ') ++poz;
while(s[poz]=='A'&&s[poz+1]=='N'&&s[poz+2]=='D'){
poz+=4;
p=f3();
if(s[poz]==' ') ++poz;
if(r+p==2) r=1;
else r=0;
}
return r;
}
int f3(){
int r;
if(s[poz]=='N'&&s[poz+1]=='O'&&s[poz+2]=='T'){
poz+=3;
r=(f4()+1)%2;
if(s[poz]==' ') ++poz;
return r;
}
r=f4();
if(s[poz]==' ') ++poz;
return r;
}
int f4(){
int val=0;
if(s[poz]=='('){
++poz;
val=f1();
++poz;
return val;
}
if('A'<=s[poz]&&s[poz]<='Z'){
++poz;
return (v[s[poz-1]-'A'+1]);
}
}
int main()
{
char c;
int n;
fgets(s, 1001, f);
fscanf(f, "%d%*c", &n);
for(int i=1; i<=n; ++i){
fscanf(f, "%c", &c);
v[c-'A'+1]=(v[c-'A'+1]+1)%2;
fprintf(g, "%d", f1());
poz=0;
}
return 0;
}