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