Pagini recente » Cod sursa (job #1512435) | Cod sursa (job #1981510) | Cod sursa (job #973999) | Cod sursa (job #2165035) | Cod sursa (job #263185)
Cod sursa(job #263185)
#include <stdio.h>
#define NMAX 1201
char s[NMAX],c;
int i,n,e[50],l;
int eval();
int factor();
int termen();
int eval()
{
int r=termen();
while (s[l]=='O' && s[l+1]=='R')
{
l+=3;
r=r | termen();
}
return r;
}
int termen()
{
int r=factor();
while (s[l]=='A' && s[l+1]=='N' && s[l+2]=='D')
{
l+=4;
r=r & factor();
}
return r;
}
int factor()
{
int r=0;
if (s[l]=='N' && s[l+1]=='O' && s[l+2]=='T')
{
l+=4;
r=factor();
return !r;
}
if (s[l]=='(')
{
l++;
r=eval();
l++;
}
else
if (s[l]=='T' && s[l+1]=='R' && s[l+2]=='U' && s[l+3]=='E')
{
l+=5;
r=1;
}
else
if (s[l]=='F' && s[l+1]=='A' && s[l+2]=='L' && s[l+3]=='S' && s[l+4]=='E')
{
l+=6;
r=0;
}
else
{
r=e[s[l]-'A'];
l+=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;
l=0;
printf("%d", eval());
}
printf("\n");
return 0;
}