Pagini recente » Cod sursa (job #1111937) | Cod sursa (job #638079) | Cod sursa (job #2843870) | Cod sursa (job #3202844) | Cod sursa (job #718047)
Cod sursa(job #718047)
#include<stdio.h>
int i,b[30],n;
char a[1005],cc;
int eval();
int or0();
int and0();
int not0();
int main()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
gets(a);
scanf("%d\n",&n);
for(;n;n--)
{
i=0;
scanf("%c",&cc);
b[cc-'A']=(b[cc-'A']+1)%2;
printf("%d",eval());
}
return 0;
}
int eval()
{
int r;
r=or0();
return r;
}
int or0()
{
int r,r1;
r=and0();
if(a[i]==' ')
i++;
if(a[i]=='O'&&a[i+1]=='R')
{
i=i+2;
r1=and0();
return r|r1;
}
else
return r;
}
int and0()
{
int r,r1;
r=not0();
if(a[i]==' ')
i++;
if(a[i+1]=='N')
{
i=i+3;
r1=not0();
return r&r1;
}
else
return r;
}
int not0()
{
int r;
if(a[i]==' ')
i++;
if(a[i]=='(')
{
i++;
r=eval();
if(a[i]==' ')
i++;
i++;
}
else
{
if(a[i+1]=='A'||a[i+1]=='R')
{
if(a[i+1]=='A')
{
i=i+5;
r=0;
}
else
{
i=i+4;
r=1;
}
}
else
{
if(a[i+1]=='O')
{
i=i+3;
r=((not0()+1)%2);
}
else
{
i++;
r=b[a[i-1]-'A'];
}
}
}
return r;
}