Pagini recente » Cod sursa (job #584754) | Cod sursa (job #2646071) | Cod sursa (job #2965585) | Cod sursa (job #1027154) | Cod sursa (job #2096356)
# include <fstream>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
bool f[26];
char ex[1010],d[1010],ch;
int n,r,i,q;
bool Or();
bool And();
bool el();
int main () {
fin.get(ex,1000);
for(i=0;ex[i]!=0;i++){
if(ex[i]==' ')
continue;
if(ex[i]=='T'&&ex[i+1]=='R'){
d[++n]='1';
continue;
}
if(ex[i]=='F'&&ex[i+1]=='A'){
d[++n]='0';
continue;
}
if(ex[i]=='O'&&ex[i+1]=='R'){
d[++n]='|';
continue;
}
if(ex[i]=='A'&&ex[i+1]=='N'){
d[++n]='&';
continue;
}
if(ex[i]=='N'&&ex[i+1]=='O'){
d[++n]='!';
continue;
}
if(i>=1&&ex[i]>='A'&&ex[i]<='Z'&&ex[i-1]>='A'&&ex[i-1]<='Z')
continue;
d[++n]=ex[i];
}
fin>>r;
for(q=1;q<=r;q++){
fin>>ch;
f[ch-'A']=1-f[ch-'A'];
i=1;
fout<<Or();
}
return 0;
}
bool Or(){
bool val=And();
while(d[i]=='|'){
i++;
val|=And();
}
return val;
}
bool And(){
bool val=el();
while(d[i]=='&'){
i++;
val&=el();
}
return val;
}
bool el(){
bool val,Xor=0;
while(d[i]=='!'){
Xor=1-Xor;
i++;
}
if(d[i]=='('){
i++;
val=Or();
i++;
return (val^Xor);
}
if(d[i]=='0')
val=0;
if(d[i]=='1')
val=1;
if(d[i]>='A'&&d[i]<='Z')
val=f[d[i]-'A'];
i++;
return (val^Xor);
}