Pagini recente » Cod sursa (job #949636) | Cod sursa (job #1238236) | Cod sursa (job #2491208) | Cod sursa (job #1302108) | Cod sursa (job #2271209)
#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++;}
if(*p=='N'&&*(p+1)=='O')
{
p+=4;
ok=1;
r=factor();
}
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;
}