Pagini recente » Cod sursa (job #349984) | Cod sursa (job #2938656) | Cod sursa (job #2007736) | Cod sursa (job #154370) | Cod sursa (job #1307166)
#include <iostream>
#include <fstream>
#define NMAX 1005
using namespace std;
int n, i;
char x[NMAX], ch, *p;
bool v[27],ev();
bool term()
{
bool b=0;
if(*p=='(')p++,b=ev(),p++;
else if(*p=='F'&&*(p+1)=='A') p+=6,b=0;
else if(*p=='T'&&*(p+1)=='R') p+=5,b=1;
else if(*p=='N'&&*(p+1)=='O') p+=4,b=!term();
else b=v[*p-'A'],p+=2;
return b;
}
bool fact()
{
bool b=term();
while(*p=='A'&&*(p+1)=='N') p+=4,b=b&term();
return b;
}
bool ev()
{
bool b=fact();
while(*p=='O'&&*(p+1)=='R') p+=3,b=b|fact();
return b;
}
int main()
{
ifstream cin("bool.in");
ofstream cout("bool.out");
cin.getline(x,NMAX);
cin>>n;
for(i=1; i<=n; i++)
cin>>ch,v[ch-'A']=!v[ch-'A'],p=x,cout<<ev();
return 0;
}