Pagini recente » Cod sursa (job #3222634) | Cod sursa (job #1051942) | Cod sursa (job #2084600) | Cod sursa (job #1347859) | Cod sursa (job #1411912)
#include <fstream>
#include <cstring>
using namespace std;
char exp[1005], ch;
short poz, lung, v[28], n;
bool termen();
bool tree();
bool termen(){
bool res;
if(exp[poz]=='N'&&exp[poz+1]=='O'){
poz+=4;
res=!(termen());
}
else if(exp[poz]=='('){
poz++;
res=tree();
poz++;
}
else if(exp[poz]=='T'&&exp[poz+1]=='R'){
poz+=4;
res=true;
}
else if(exp[poz]=='F'&&exp[poz+1]=='A'){
poz+=5;
res=false;
}
else{
res=v[(int)exp[poz]-65];
poz+=1;
}
return res;
}
bool tree(){
bool res;
res=termen();
while(poz<lung&&(exp[poz]=='A'||exp[poz]=='O'||exp[poz]==' ')){
if(exp[poz]=='A'){
poz+=4;
res=res&(termen());
}
else if(exp[poz]=='O'){
poz+=3;
res=res|(termen());
}
else poz++;
}
return res;
}
int main()
{
ifstream in("bool.in");
ofstream out("bool.out");
in.get(exp, 1001);
lung=strlen(exp);
in>>n;
in.get();
for(int i=1; i<=n; ++i){
ch=in.get();
v[(int)ch-65]=1-v[(int)ch-65];
poz=0;
out<<tree();
}
in.close();
out.close();
return 0;
}