Pagini recente » Cod sursa (job #690779) | Cod sursa (job #2112005) | Cod sursa (job #1996809) | Cod sursa (job #1289460) | Cod sursa (job #263845)
Cod sursa(job #263845)
#include <stdio.h>
#define NMAX 1201
char s[NMAX],c,*p;
int i,n,e[50],l;
int eval();
int factor();
int termen();
int eval()
{
int r=termen();
while (*p=='O' && *(p+1)=='R'){
p+=3;
r=r | termen();
}
return r;
}
int termen()
{
int r=factor();
while (*p=='A' && *(p+1)=='N' && *(p+2)=='D'){
p+=4;
r=r & factor();
}
return r;
}
int factor()
{
int r;
if (*p=='('){
p++;
r=eval();
p++;
}
else if (*p=='N' && *(p+1)=='O' && *(p+2)=='T'){
p+=4;
r=!factor();
}
else
if (*p=='T' && *(p+1)=='R' && *(p+2)=='U' && *(p+3)=='E'){
p+=5;
r=1;
}
else
if (*p=='F' && *(p+1)=='A' && *(p+2)=='L' && *(p+3)=='S' && *(p+4)=='E'){
p+=6;
r=0;
}
else {
r=e[*p-'A'];
p+=2;
}
return r;
}
int main()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
fgets(s,NMAX,stdin);
scanf("%d\n", &n);
for (i=1;i<=n;i++)
{
scanf("%c", &c);
e[c-'A']=e[c-'A']^1; p=s;
printf("%d", eval());
}
printf("\n");
return 0;
}