Pagini recente » Cod sursa (job #1493576) | Cod sursa (job #291032) | Cod sursa (job #1631034) | Cod sursa (job #2211217) | Cod sursa (job #1874933)
#include <cstdio>
#include <string>
#include <iostream>
using namespace std;
bool v[30];
string s;
int k;
bool f1(), f2(), f3();
bool f1()
{
int x=f2();
while(s[k]=='|')
{
k++;
x|=f2();
}
return x;
}
bool f2()
{
int x=f3();
while(s[k]=='&')
{
k++;
x&=f3();
}
return x;
}
bool f3()
{
bool x=0;
if(s[k] == '!')
{
k++;
return !f3();
}
if(s[k] == '(')
{
k++;
x=f1();
k++;
return x;
}
if(s[k] == '1')
{
k++;
return 1;
}
if(s[k] == '0')
{
k++;
return 0;
}
k++;
return v[s[k-1] - 'A'];
}
void modify()
{
for(int i=0; i<=s.size(); i++)
{
if(s[i]=='N' && s[i+1]=='O' && s[i+2]=='T')
{
s[i]='!';
s.erase(i+1, 2);
}
else if(s[i]=='O' && s[i+1]=='R')
{
s[i]='|';
s.erase(i+1, 1);
}
else if(s[i]=='A' && s[i+1]=='N' && s[i+2]=='D')
{
s[i]='&';
s.erase(i+1, 2);
}
else if(s[i]=='T' && s[i+1]=='R' && s[i+2]=='U' && s[i+3]=='E')
{
s[i]='1';
s.erase(i+1, 3);
}
else if(s[i]=='F' && s[i+1]=='A' && s[i+2]=='L' && s[i+3]=='S' && s[i+4]=='E')
{
s[i]='0';
s.erase(i+1, 4);
}
else if(s[i]==' ')
{
s.erase(i, 1);
i--;
}
}
}
int main()
{
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
getline(cin, s);
modify();
int n;
scanf("%d ", &n);
char c;
for(int i=1; i<=n; i++)
{
scanf("%c", &c);
v[c-'A']=!v[c-'A'];
k=0;
printf("%d", f1());
}
}