Pagini recente » Cod sursa (job #164910) | Cod sursa (job #29138) | Cod sursa (job #486978) | Cod sursa (job #2139330) | Cod sursa (job #2682181)
#include <fstream>
#define NMAX 1005
using namespace std;
ifstream cin("bool.in");
ofstream cout("bool.out");
char s[NMAX], v[105],*p;
int x[105], n;
int termen();
int factor();
int eval()
{
int rez=termen();
while(*p =='O' && *(p+1)=='R')
{
p+=3;
rez =rez || termen();
}
return rez;
}
int termen()
{
int rez = factor();
while(*p=='A' && *(p+1)=='N' && *(p+2)=='D')
{
p+=4;
rez=rez && factor();
}
return rez;
}
int factor()
{
int rez = 0;
if(*p=='N' && *(p+1)=='O' && *(p+2)=='T')
{
p+=4;
rez=!(factor());
}
else
if(*p=='(')
p++,rez=eval(),p+=2;
else
{
if(isalpha(*p))
{
rez=x[*p-'A'];
p+=2;
}
}
return rez;
}
int main()
{
cin.getline(s,1005);
cin >> n;
cin >> v;
for(char *p1=v;*p1!=0;p1++)
{
x[*p1-'A']=1-x[*p1-'A'];
p=s;
cout<<eval();
}
}