Pagini recente » Cod sursa (job #2367367) | Cod sursa (job #2439177) | Cod sursa (job #2104362) | Cod sursa (job #634696) | Cod sursa (job #2096344)
# include <fstream>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
bool f[26];
char ex[1010],d[1010],ch;
int n,q,i,r;
bool Or();
bool And();
bool Not();
bool element();
int main () {
fin.get(ex,1000);
for(i=0;ex[i]!=0;i++){
if(ex[i]==' ')
continue;
if(i>=2&&ex[i]=='T'&&ex[i-1]=='O'&&ex[i-2]=='N'){
d[++n]='!';
continue;
}
if(i>=1&&ex[i]=='R'&&ex[i-1]=='O'){
d[++n]='|';
continue;
}
if(i>=2&&ex[i]=='D'&&ex[i-1]=='N'&&ex[i-2]=='A'){
d[++n]='&';
continue;
}
if(i>=3&&ex[i]=='E'&&ex[i-1]=='U'&&ex[i-2]=='R'&&ex[i-3]=='T'){
d[++n]='1';
continue;
}
if(i>=4&&ex[i]=='E'&&ex[i-1]=='S'&&ex[i-2]=='L'&&ex[i-3]=='A'&&ex[i-4]=='F'){
d[++n]='0';
continue;
}
if(ex[i]>='A'&&ex[i]<='Z'){
if(ex[i+1]>='A'&&ex[i+1]<='Z')
continue;
d[++n]=ex[i];
continue;
}
d[++n]=ex[i];
}
fin>>q;
for(r=1;r<=q;r++){
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=(val|And());
}
return val;
}
bool And(){
bool val=Not();
while(d[i]=='&'){
i++;
val=(val&Not());
}
return val;
}
bool Not(){
if(d[i]=='!'){
i++;
return 1-element();
}
return element();
}
bool element(){
bool val;
if(d[i]=='('){
i++;
val=Or();
i++;
return val;
}
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;
}