Pagini recente » Cod sursa (job #2422136) | Cod sursa (job #2757675) | Cod sursa (job #1616406) | Cod sursa (job #2537279) | Cod sursa (job #818873)
Cod sursa(job #818873)
#include <cstdio>
using namespace std;
char s[1010];
char *p;
bool val['Z'-'A'+5];
bool lowest_level();
bool eval2();
bool evaluate()
{
bool v1,v2;
v1 = eval2();
while(*p == 'O' && *(p+1) == 'R')
{
p+= 3;
v2 = eval2();
v1 = v1 || v2;
}
return v1;
}
bool eval2()
{
bool v1,v2;
v1 = lowest_level();
while(*p == 'A' && *(p+1) == 'N')
{
p+=4;
v2 = lowest_level();
v1 = v1 && v2;
}
return v1;
}
bool lowest_level()
{
bool r;
if(*p == '(')
{
++p;
r = evaluate();
++p;
}
else
if(*p == 'T' && *(p+1) == 'R')
{
r = true;
p += 5;
}
else
if(*p == 'F' && *(p+1) == 'A')
{
r = false;
p += 6;
}
else
if(*p == 'N' && *(p+1) == 'O')
{
p += 4;
r = !lowest_level();
}
else
{
r = val[*p - 'A'];
p += 2;
}
return r;
}
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']=!val[c-'A'];
p = s;
printf("%d",evaluate());
}
return 0;
}