Pagini recente » Cod sursa (job #2479442) | Cod sursa (job #1812755) | Cod sursa (job #2476061) | Cod sursa (job #2313542) | Cod sursa (job #177284)
Cod sursa(job #177284)
#include <stdio.h>
#include <string.h>
#define sigma 26
char S[2005],*p,ch;
long n,i,a[27],l,q;
long termen();
long factor();
long eval(){
long t=termen();
while (*p=='O'&&*(p+1)=='R'){
p+=2;
t|=termen();
}
return t;
}
long termen(){
long f=factor();
while (*p=='A'&&*(p+1)=='N'){
p+=3;
f&=factor();
}
return f;
}
long factor(){
long poz=1,t;
if (*p=='N' && *(p+1)=='O'){
p+=3;
poz=0;
t=eval();
}
else
if (*p=='('){
p++;
t=eval();
p++;
}
else
if (*p=='T' && *(p+1)=='R'){p+=4;t=1;}
else if (*p=='F' && *(p+1)=='A'){p+=5;t=0;}
else {t=a[*p-'A'];p++;}
if (poz) return t;
else return (t>0)?0:1;
}
int main(){
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
gets(S);
l=strlen(S);
q=-1;
for (i=0;i<l;i++)
if(S[i]!=' ')S[++q]=S[i];
S[++q]=0;
//initializare
for (i=0;i<sigma;i++)a[i]=0;
scanf("%ld\n",&n);
for (i=1;i<=n;i++){
scanf("%c",&ch);
if (a[ch-'A'])a[ch-'A']=0;
else a[ch-'A']=1;
p=S;
printf("%ld",eval());
}
printf("\n");
return 0;
}