Pagini recente » Cod sursa (job #878589) | Cod sursa (job #2586941) | Cod sursa (job #314534) | Cod sursa (job #408226) | Cod sursa (job #2271236)
#include <bits/stdc++.h>
using namespace std;
char c[1005],*p,a;
bool b[300];
int n,i;
int eval();
int termen();
int factor()
{
int r=0,ok=0;
if(*p=='(')
{
p++;
r=eval();
p++;}
else if(*p=='N'&&*(p+1)=='O')
{
p+=4;
ok=!ok;
r=factor();
}
else if(*p=='T'&&*(p+1)=='R')
{r=1;p+=5;}
else if(*p=='F'&&*(p+1)=='A')
{r=0;p+=6;}
else {r=b[*p];p+=2;}
if(ok)r=!r;
return r;
}
int termen()
{
int r=factor();
while(*p=='A'&&*(p+1)=='N')
{
p+=4;
r=r&factor();
}
return r;
}
int eval()
{
int r=termen();
while(*p=='O'&&*(p+1)=='R')
{
p+=3;
r=r|termen();
}
return r;
}
ifstream f("bool.in");
ofstream g("bool.out");
int main()
{
f.getline(c,1003);
f>>n;
for(i=1;i<=n;i++)
{
f>>a;
p=c;
b[a]=!b[a];
g<<eval();
}
return 0;
}