Pagini recente » Cod sursa (job #17733) | Cod sursa (job #1138019) | Cod sursa (job #1023076) | Cod sursa (job #1280938) | Cod sursa (job #2271189)
#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;
if(*p=='(')
{
p++;
r=eval();
p++;}
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;}
return r;
}
int termen()
{
int r;
while((*p=='A'&&*(p+1)=='N')||(*p=='N'&&*(p+1)=='O'))
{if(*p=='N'&&*(p+1)=='O')
{
p+=4;
r=factor();
r=!r;
}
else r=factor();
if((*p=='A'&&*(p+1)=='N'))
{
if(*p=='A'&&*(p+1)=='N')
r=r&factor();
p+=4;
}}
return r;
}
int eval()
{
int r=termen();
while(*p=='O'&&*(p+1)=='R')
{
r=r|termen();
p+=3;
}
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;
}