Pagini recente » Cod sursa (job #2085207) | Cod sursa (job #1489289) | Cod sursa (job #1910432) | Diferente pentru implica-te/arhiva-educationala intre reviziile 69 si 68 | Cod sursa (job #983946)
Cod sursa(job #983946)
#include <cstdio>
#include <cstring>
char s[1005],*p;
int n,v[30],l;
int termen();
int factor();
int eval()
{ int r=termen();
while(*p=='O') p+=2, r|=termen();
return r;
}
int termen()
{ int r=factor();
while(*p=='A') p+=3, r&=factor();
return r;
}
int factor()
{ int r;
if(*p=='(') p++, r=eval(), p++;
else if(*p=='T') p+=4, r=1;
else if(*p=='F') p+=5, r=0;
else if(*p=='N') p+=3, r=!factor();
else r=v[*p-'A'], p++;
return r;
}
int main()
{ freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
fgets(s,1005,stdin);
l=strlen(s);
int i,k=0;
for(i=0; i<l; i++) if(s[i]!=' ') s[k++]=s[i];
s[k]='\0';
scanf("%d\n",&n);
char x[210];
fgets(x,n+5,stdin);
for (i=0; i<n; i++)
{ v[x[i]-'A']=!v[x[i]-'A'];
p=s;
printf("%d",eval());
}
return 0;
}