Pagini recente » Cod sursa (job #1509412) | Cod sursa (job #1331418) | Cod sursa (job #2710890) | Cod sursa (job #2160489) | Cod sursa (job #2816368)
#include<fstream>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
int i,j,k,ok,n,x,y,pp;
char a[1001],v[1001],nr;
int pM();
int p();
int pm();
int pm() {
int x=pM();
while(v[i]=='&' || v[i]=='|' ){
if(v[i]=='&'){
i++;
x&=pM();
}
else{
i++;
x|=pM();
}
}
return x;
}
int pM(){
int x=p();
while(v[i]=='~'){
i++;
x=!(p());
}
return x;
}
int p(){
int x=0;
if(v[i]=='('){
i++;
x=pm();
i++;
}
else{
if(v[i]=='t'){
x=1;
i++;
}
if(v[i]=='f'){
x=0;
i++;
}
}
return x;
}
int main(){
fin.getline(a, 1010);
k=0;
j=0;
while(a[k]!=0){
ok=0;
if(a[k]=='A'){
if(a[k+1]=='N'){
k+=3;
v[j]='&';
j++;
ok=1;
}
}
if(a[k]=='O')
if(a[k+1]=='R'){
k+=2;
v[j++]='|';
ok=1;
}
if(a[k]=='N')
if(a[k+2]=='T'){
k+=3;
v[j++]='~';
ok=1;
}
if(a[k]=='T' && a[k+1]=='R'){
k+=4;
v[j++]='t';
}
if(a[k]=='F' && a[k+1]=='A'){
k+=5;
v[j++]='f';
}
if(ok==0){
v[j++]=a[k];
k++;
}
}
pp=j;
fin>>n;
for(k=1;k<=n;k++){
fin>>nr;
i=0;
for(j=0;j<=pp;j++){
if(v[j]==nr){
v[j]=(~v[j]);
}
}
i=0;
fout<<pm();
}
return 0;
}