Pagini recente » Cod sursa (job #792106) | Cod sursa (job #804174) | Cod sursa (job #2921343) | Cod sursa (job #2455744) | Cod sursa (job #1496739)
#include <cstdio>
FILE*f=fopen("bool.in","r");
FILE*h=fopen("bool.out","w");
int n,p;
bool v[501];
char s[2010],c;
void advance(){
while(s[p]==' '){
++p;
}
}
bool expresie();
bool element(){
bool k=0;
advance();
if ( s[p]=='(' ) {
++p;
advance();
k = expresie();
advance();
++p;
} else {
if ( s[p]=='T'&&s[p+1]=='R' ){p+=4;advance();k=1;}
else
if ( s[p]=='F'&&s[p+1]=='A'){p+=5;advance();k=0;}
else
if ( s[p]=='N'&&s[p+1]=='O' )
{p+=3;
advance();
bool tmp=element();
k=(!tmp);
advance();
}
else {k=v[s[p]];advance();p+=1;}
}
return k;
}
bool termen(){
bool b=element();
advance();
while ( s[p]=='A'&&s[p+1]=='N' ){
p+=3;
advance();
bool tmp = element();
b=(b&&tmp);
advance();
}
return b;
}
bool expresie(){
bool b=termen();
advance();
while ( s[p]=='O'&&s[p+1]=='R' ){
advance();
p+=2;
advance();
bool tmp = termen();
b=(b||tmp);
advance();
}
return b;
}
int main()
{
fgets(s,2010,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;
}