Pagini recente » Cod sursa (job #701109) | Cod sursa (job #3226696) | Cod sursa (job #429325) | Cod sursa (job #2631307) | Cod sursa (job #2203788)
#include <bits/stdc++.h>
using namespace std;
ifstream in("bool.in");
ofstream out("bool.out");
int n,m,p;
char str[1005],change[105];
bool OR();
bool v[30];
void skip()
{
while(str[p]==' ' && p<m)
p++;
}
bool eval()
{
bool a;
if(str[p]=='(')
{
p++;
a=OR();
skip();
p++;
}
else if(str[p]=='T' && str[p+1]=='R')
{
p+=4;
a=1;
}
else if(str[p]=='F' && str[p+1]=='A')
{
p+=5;
a=0;
}
else if(str[p]=='N' && str[p+1]=='O')
{
p+=3;
a=!eval();
}
else
{
a=v[str[p]-'A'];
p++;
}
skip();
return a;
}
bool AND()
{
skip();
bool a=eval();
skip();
while(str[p]=='A' && str[p+1]=='N' && p<m)
{
p+=3;
a&=eval();
skip();
}
return a;
}
bool OR()
{
skip();
bool a=AND();
skip();
while(str[p]=='O' && str[p+1]=='R' && p<m)
{
p+=2;
a|=AND();
skip();
}
return a;
}
int main()
{
in.get(str,1001);
m=strlen(str);
in >> n;
in >> change;
for(int i=0; i<n; i++)
{
v[change[i]-'A']=!v[change[i]-'A'];
p=0;
out << eval();
}
return 0;
}