Pagini recente » Cod sursa (job #1496912) | Cod sursa (job #1803350) | Cod sursa (job #2832846) | Cod sursa (job #2549376) | Cod sursa (job #779959)
Cod sursa(job #779959)
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
int v[1024], N;
char s[1024], *p, c;
int Eval();
int Term();
int Fact();
int Eval()
{
int res = Term();
while(*p == 'O' && *(p + 1) == 'R')
{
p += 3;
res |= Term();
}
return res;
}
int Term()
{
int res = Fact();
while(*p == 'A' && *(p + 1) == 'N')
{
p += 4;
res &= Fact();
}
return res;
}
int Fact()
{
int res = 0;
if(*p == 'N' && *(p + 1) == 'O')
{
p += 4;
res |= !Fact();
}
else if(*p == 'T' && *(p + 1) == 'R')
{
p += 5;
res = 1;
}
else if(*p == 'F' && *(p + 1) == 'A')
{
p += 6;
res = 0;
}
else if(*p == '(')
{
++ p;
res = Eval();
++ p;
}
else res = v[*p - 'A'], p += 2;
return res;
}
int main()
{
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
int i;
gets(s);
scanf("%i\n", &N);
while(N --)
{
scanf("%c", &c);
v[c - 'A'] = !v[c - 'A'];
p = s;
printf("%i", Eval());
}
return 0;
}