Pagini recente » Cod sursa (job #866305) | Cod sursa (job #827526) | Cod sursa (job #745548) | Cod sursa (job #1250453) | Cod sursa (job #1820063)
#include<cstdio>
char v[26];
char s[1001];
int poz=0;
int andt(int a,int b){
if(a==1&&b==1)
return 1;
else
return 0;
}
int ort(int a,int b){
if(a==1||b==1)
return 1;
else
return 0;
}
int expresie();
int factor();
int main(){
int i,n;
char c;
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
c=fgetc(stdin);
i=0;
while(c!='\n'){
if(c=='('||c==')'){
s[i++]=c;
c=fgetc(stdin);
}else{
if(c=='T'){
c=fgetc(stdin);
if(c=='R'){
s[i++]='t';
fgetc(stdin);
fgetc(stdin);
c=fgetc(stdin);
}else
s[i++]='T';
}else if(c=='F'){
c=fgetc(stdin);
if(c=='A'){
s[i++]='f';
fgetc(stdin);
fgetc(stdin);
fgetc(stdin);
c=fgetc(stdin);
}else
s[i++]='F';
}else if(c=='N'){
c=fgetc(stdin);
if(c=='O'){
s[i++]='n';
fgetc(stdin);
c=fgetc(stdin);
}else
s[i++]='N';
}else if(c=='A'){
c=fgetc(stdin);
if(c=='N'){
s[i++]='a';
fgetc(stdin);
c=fgetc(stdin);
}else
s[i++]='A';
}else if(c=='O'){
c=fgetc(stdin);
if(c=='R'){
s[i++]='o';
c=fgetc(stdin);
}else
s[i++]='O';
}else{
s[i++]=c;
c=fgetc(stdin);
}
}
while(c==' ')
c=fgetc(stdin);
}
scanf("%d\n",&n);
for(i=1;i<=n;i++){
c=fgetc(stdin);
v[c-'A']=1-v[c-'A'];
printf("%d",expresie());
}
return 0;
}
int expresie(){
int ans=factor();
while(s[poz]=='a'||s[poz]=='o'){
poz++;
if(v[poz-1]=='a')
ans=andt(ans,factor());
else
ans=ort(ans,factor());
}
return ans;
}
int factor(){
int ans=0;
if(s[poz]=='('){
poz++;
ans=expresie();
poz++;
}else if(s[poz]=='n'){
poz++;
if(s[poz]=='('){
poz++;
ans=expresie();
poz++;
}else
ans=expresie();
ans=1-ans;
}else if(s[poz]>='A'&&s[poz]<='Z')
ans=v[s[poz]-'A'];
else if(s[poz]=='t')
ans=1;
else
ans=0;
return ans;
}