Pagini recente » Cod sursa (job #2340323) | Cod sursa (job #688183) | Cod sursa (job #665573) | Cod sursa (job #768498) | Cod sursa (job #2680205)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
int n, vv[35], k=0, l;
char* ex;
void eat0(){
while(k<l && ex[k]==' ')k++;
}
bool ev();
bool fact(){
bool ret=0;
eat0();
if(ex[k]=='('){
k++;
ret = ev();
k++;
return ret;
}
if(k<l-1 && ex[k]=='N' && ex[k+1]=='O'){
k+=3;
return fact()^1;
}
if(k<l-1 && ex[k]=='T' && ex[k+1]=='R'){
k+=4;
return true;
}
else if(k<l-1 && ex[k]=='F' && ex[k+1]=='A'){
k+=5;
return false;
}
else{
return vv[ex[k++]-'A'];
}
}
bool ev2(){
bool ret = true;
if(!fact())ret = false;
eat0();
while(ex[k]=='A' && ex[k+1]=='N'){
k+=3;
if(!fact())ret = false;
eat0();
}
return ret;
}
bool ev(){
bool ret = false;
if(ev2())ret = true;
eat0();
while(ex[k]=='O' && ex[k+1]=='R'){
k+=2;
if(ev2())ret = true;
eat0();
}
return ret;
}
int main()
{
ex = new char[1010];
fin.get(ex,1010);
fin>>n;
l=strlen(ex);
for(int i=1;i<=n;i++){
char c;
fin>>c;
vv[c-'A']=1-vv[c-'A'];
k=0;
fout<<ev();
}
fout<<"\n";
return 0;
}