Pagini recente » Cod sursa (job #1159677) | Cod sursa (job #50479) | Cod sursa (job #2981586) | Cod sursa (job #2934862) | Cod sursa (job #1023243)
#include <cstdio>
FILE*f=fopen("bool.in","r");
FILE*h=fopen("bool.out","w");
int n,p;
bool v[501];
char s[1010],c;
bool expresie();
bool element(){
bool k=0;
if ( s[p]=='(' ){++p;k=expresie();++p;}
else if ( s[p]=='T'&&s[p+1]=='R' ){p+=5;k=1;}
else if ( s[p]=='F'&&s[p+1]=='A'){p+=6;k=0;}
else if ( s[p]=='N'&&s[p+1]=='O' ){p+=4;k=!element();}
else {k=v[s[p]];p+=2;}
return k;
}
bool termen(){
bool b=element();
while ( s[p]=='A'&&s[p+1]=='N' ){p+=4;b=b&element();}
return b;
}
bool expresie(){
bool b=termen();
if ( s[p]=='O'&&s[p+1]=='R' ){
p+=3;
b=b|termen();
}
return b;
}
int main()
{
fgets(s,1010,f);
fscanf(f,"%d\n",&n);
for ( int i=1;i<=500;++i )
v[i]=0;
for ( int i=1;i<=n;++i ){
p=0;
fscanf(f,"%c",&c);
v[c]=!v[c];
fprintf(h,"%d",expresie());
}
return 0;
}