Pagini recente » Cod sursa (job #3156781) | Cod sursa (job #1433041) | Cod sursa (job #366801) | Cod sursa (job #1667411) | Cod sursa (job #291402)
Cod sursa(job #291402)
#include <stdio.h>
#include <string.h>
#define dim 1100
char s[dim], ch, *p;
int val[27], n;
int expr();
int termen()
{
int r=expr();
while ((*p=='A' && *(p+1)=='N' && *(p+2)=='D') || (*p=='O' && *(p+1)=='R'))
{
switch (*p)
{
case 'A':
p+=4;
r&=expr();
break;
case 'O':
p+=3;
r|=expr();
break;
}
}
return r;
}
int expr()
{
int r;
if (*p=='(')
{
p++;
r=termen();
p++;
}
else if (*p=='N' && *(p+1)=='O')
{
p+=4;
r=!expr();
}
else if (*p=='T' && *(p+1)=='R')
{
r=1;
p+=5;
}
else if (*p=='F' && *(p+1)=='A')
{
r=0;
p+=6;
}
else
{
r=val[*p-'A'];
p+=2;
}
return r;
}
int main()
{
char ch;
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
fgets(s, dim, stdin);
memset(val, 0, sizeof(val));
scanf("%d\n", &n);
for (; n; n--)
{
scanf("%c\n", &ch);
val[ch-'A']^=1;
p=s;
printf("%d", termen());
}
return 0;
}