Pagini recente » Cod sursa (job #2483959) | Cod sursa (job #252943) | Cod sursa (job #2394782) | Cod sursa (job #2222607) | Cod sursa (job #2533252)
#include <fstream>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
int i,j=-1,val[200],n;
char c[1005],s[1005],ch;
int OR(),AND(),XOR(),factor();
int main(){
fin.getline(c,1002);
for(i=0;c[i];i++){
if(c[i]==' ')continue;
else if(c[i]=='T' && c[i+1]=='R')
s[++j]='1',i+=3;
else if(c[i]=='F' && c[i+1]=='A')
s[++j]='0',i+=4;
else if(c[i]=='A' && c[i+1]=='N')
s[++j]='&',i+=2;
else if(c[i]=='O' && c[i+1]=='R')
s[++j]='|',i++;
else if(c[i]=='N' && c[i+1]=='O')
s[++j]='1',s[++j]='^',j+=2; ///din ! unar fac ^ binar
else s[++j]=c[i];
}
fin>>n;
for(;n--;){
fin>>ch;
val[ch]=1-val[ch];
i=0;
fout<<OR();
}
return 0;
}
int OR(){
int r=AND();
while(s[i]=='|'){
i++;
r=(r|AND());
} return r;
}
int AND(){
int r=XOR();
while(s[i]=='&'){
i++;
r=(r&XOR());
} return r;
}
int XOR(){
int r=factor();
while(s[i]=='^'){
i++;
r=(r^factor());
} return r;
}
int factor(){
if(s[i]=='('){
i++;
int r=OR();
i++;
return r;
}
else if(s[i]=='0'){
i++;return 0;
}
else if(s[i]=='1'){
i++;return 1;
}
return val[s[i++]];
}