Pagini recente » Cod sursa (job #1142310) | Cod sursa (job #2256686) | Cod sursa (job #1481165) | Cod sursa (job #413697) | Cod sursa (job #2223822)
//#include <iostream>
#include <fstream>
using namespace std;
ifstream cin("bool.in");
ofstream cout("bool.out");
char sir[105];
bool variabile[26];
int N;
bool sol;
bool evalO(char* &sir);
bool evalX(char* &sir)
{
bool answer;
if(sir[0]=='('){
sir++;
answer=evalO(sir);
sir++;
}
else
if(sir[0]=='T' and sir[1]=='R'){
sir+=4;
answer=1;
}
else
if(sir[0]=='F' and sir[1]=='A'){
sir+=5;
answer=0;
}
else{
answer=variabile[sir[0]-'A'];
sir+=4;
}
return answer;
}
bool evalN(char* &sir)
{
if(sir[0]=='N' and sir[1]=='O'){
sir+=4;
return !evalN(sir);
}
else{
return evalX(sir);
}
}
bool evalE(char* &sir)
{
bool answer=evalN(sir);
if(sir[0]==' ' and sir[1]=='A' and sir[2]=='N'){
sir+=5;
answer&=evalE(sir);
}
return answer;
}
bool evalO(char* &sir)
{
bool answer=evalE(sir);
if(sir[0]==' ' and sir[1]=='O' and sir[2]=='R'){
sir += 4;
answer |= evalO(sir);
}
return answer;
}
int main()
{
int i;
char c;
char* pozitie;
gets(sir);
cin>>N;
cin.get();
for (i=0;i<N;i++){
cin>>c;
variabile[c-'A']=!variabile[c-'A'];
pozitie=sir;
sol=evalO(pozitie);
cout<<sol;
}
return 0;
}