Pagini recente » Cod sursa (job #1301978) | Cod sursa (job #853652) | Cod sursa (job #931879) | Cod sursa (job #2005960) | Cod sursa (job #291383)
Cod sursa(job #291383)
#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=r&&expr();
break;
case 'O':
p+=3;
r=r||expr();
break;
}
}
return r;
}
int expr()
{
int r;
if (*p=='N' && *(p+1)=='O')
{
p+=4;
r=!(termen());
return r;
}
else if (*p=='T' && *p=='R')
{
p+=5;
return 1;
}
else if (*p=='F' && *p=='A')
{
p+=6;
return 0;
}
else if (*p=='(')
{
p++;
return termen();
}
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;
}