Pagini recente » Cod sursa (job #2182204) | Cod sursa (job #3198200) | Cod sursa (job #1658178) | Cod sursa (job #2130733) | Cod sursa (job #81477)
Cod sursa(job #81477)
#include<stdio.h>
#include<string.h>
int a[64],q,n,w[100];
char s[1000],s1[1000],ch;
int rez(char s[1000], long l, long rel, long chr1, long not_){
long nr,des,inc,i,j=0,chr=0,ok;
for(i=0;i<l;i++){
ok=0;
if(s[i]=='('){
des=1;inc=0;nr=-1;
for(i=i+1;des!=inc;i++){
nr++;
s1[nr]=s[i];
if(s1[nr]=='(')des++;
else if(s1[nr]==')')inc++;
}
chr=rez(s1,nr,0,0,0);
ok=1;
}
else if(s[i+1]==' ' || (i+1)==l){
chr=a[s[i]-65];
ok=1;
}
else if(s[i]=='T'){
chr=1;
ok=1;
j=i+3;
}
else if(s[i]=='F'){
chr=0;
j=i+4;
ok=1;
}
else if(s[i]=='N'){
not_++;
j=i+2;
}
else if(s[i]=='A' || s[i]=='O'){
rel=s[i];
chr1=chr;
if(s[i]=='A')j=i+2;
else j=i+1;
}
else continue;
if(not_==1 && ok==1){
for(not_=not_;not_>0;not_--)
if(chr==0)chr=1;
else chr=0;
}
if(rel!=s[i] && rel!=0 && ok==1){
if(rel=='A')chr=chr1 and chr;
else chr=chr1 or chr;
rel=0;
}
if(j!=0)i=j;
j=0;
}
return chr;
}
int main(){
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
fgets(s,1000,stdin);
scanf("%d\n",&n);
//fgets(s1,1000,stdin);
for(q=0;q<n;q++){
scanf("%c",&ch);
if(a[ch-65]==0)a[ch-65]=1;
else a[ch-65]=0;
w[q]=rez(s,strlen(s),0,0,0);
}
for(q=0;q<n;q++)
printf("%d",w[q]);
fclose(stdin);
fclose(stdout);
return 0;
}