Pagini recente » Cod sursa (job #1217376) | Cod sursa (job #2570641) | Cod sursa (job #2678800) | Cod sursa (job #1774120) | Cod sursa (job #447544)
Cod sursa(job #447544)
#include <cstdio>
#include <cstring>
#define lmax 1010
char s[lmax], *p;
int n, v[30], l;
int termen();
int factor();
int eval()
{
int r=termen();
while (*p=='O' && *(p+1)=='R')
{
p+=2;
r|=termen();
}
return r;
}
int termen()
{
int r=factor();
while (*p=='A' && *(p+1)=='N')
{
p+=3;
r&=factor();
}
return r;
}
int factor()
{
int r;
if (*p=='(')
{
p++;
r=eval();
p++;
} else
if (*p=='T' && *(p+1)=='R')
{
p+=4;
r=1;
} else
if (*p=='F' && *(p+1)=='A')
{
p+=5;
r=0;
} else
if (*p=='N' && *(p+1)=='O')
{
p+=3;
r=!factor();
} else
{
r=v[*p-'A'];
p++;
}
return r;
}
int main()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
fgets(s,lmax,stdin);
l=strlen(s);
int i, k=0, j;
for (i=0; i<l; i++)
if (s[i]!=' ') s[k++]=s[i];
s[k]='\0';
scanf("%d\n",&n);
char x[210];
fgets(x,n+5,stdin);
for (i=0; i<n; i++)
{
v[x[i]-'A']=!v[x[i]-'A'];
p=s;
printf("%d",eval());
}
}