Pagini recente » Cod sursa (job #2111892) | Cod sursa (job #1873533) | Cod sursa (job #2172199) | Cod sursa (job #2414211) | Cod sursa (job #818805)
Cod sursa(job #818805)
#include <cstdio>
using namespace std;
char s[1010];
char *p;
bool val['Z'-'A'+5];
bool lowest_level();
bool evaluate()
{
while(*p == ' ')
++p;
bool v1,v2;
v1 = lowest_level();
while(*p == ' ')
++p;
while(*p >= 'A' && *p <= 'Z' && *(p+1) >='A' && *(p+1) <= 'Z')
{
while(*p == ' ')
++p;
if(*p == 'A' && *(p+1) == 'N')
{
p += 3;
v1 = v1 && lowest_level();
}
else if(*p == 'O' && *(p+1) == 'R')
{
p+= 2;
v2 = lowest_level();
v1 = v1 || v2;
}
while(*p == ' ')
++p;
}
return v1;
}
bool lowest_level()
{
while(*p == ' ')
++p;
if(*p == '(')
{
++p;
return evaluate();
}
if(*p >= 'A' && *p <= 'Z' && !(*(p+1) <= 'Z' && *(p+1) >= 'A'))
{
++p;
return val[*(p-1)-'A'];
}
if(*p == 'T' && *(p+1) == 'R')
{
p+= 4;
return 1;
}
if(*p == 'F' && *(p+1) == 'A')
{
p+= 5;
return 0;
}
if(*p == 'N' && *(p+1) == 'O')
{
p+= 3;
return !lowest_level();
}
}
int main()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
gets(s);
int n,i;
char c;
scanf("%d\n",&n);
for(i=1;i<=n;++i)
{
scanf("%c",&c);
val[c-'A']^=1;
p = s;
printf("%d",evaluate());
}
return 0;
}