Pagini recente » Cod sursa (job #2621873) | Cod sursa (job #2475385) | Cod sursa (job #1495531) | Cod sursa (job #1127481) | Cod sursa (job #303148)
Cod sursa(job #303148)
#include<algorithm>
using namespace std;
#define DIM 1001
int n,lg;
char s[DIM],aux[DIM],*p;
int eval1();
int eval2();
int eval0(){
int rez=eval1();
while(*p=='O'&&*(p+1)=='R'){
p+=3;
rez|=eval1();}
return rez;}
int eval1(){
int rez=eval2();
while(*p=='A'&&*(p+1)=='N'){
p+=4;
rez&=eval2();}
return rez;}
int eval2(){
int rez;
if(*p=='N'&&*(p+1)=='O'){
p+=4;
rez=!eval0();}
else if(*p=='T'&&*(p+1)=='R'){
p+=5;
rez=1;}
else if(*p=='F'&&*(p+1)=='A'){
p+=6;
rez=0;}
else if(*p=='('){
++p;
rez=eval0();
++p;}
else{
rez=*p-'0';
p+=2;}
return rez;}
int check(int x){
if(isupper(s[x])){
if(!x&&!isupper(s[x+1]))
return 1;
else if(x==lg-1&&!isupper(s[x-1]))
return 1;
else if(!isupper(s[x-1])&&!isupper(s[x+1]))
return 1;}
return 0;}
void solve(){
int i,j;
char ch;
gets(s);
lg=strlen(s);
strcpy(aux,s);
for(i=0; i<lg; ++i)
if(check(i))
aux[i]='0';
scanf("%d\n",&n);
for(i=0; i<n; ++i){
scanf("%c",&ch);
for(j=0; j<lg; ++j)
if(s[j]==ch&&isdigit(aux[j]))
aux[j]=!aux[j];
p=aux;
printf("%d",eval0());}}
int main(){
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
solve();
return 0;}