Pagini recente » Cod sursa (job #372255) | Cod sursa (job #1633135) | Cod sursa (job #520765) | Cod sursa (job #651341) | Cod sursa (job #187983)
Cod sursa(job #187983)
#include<stdio.h>
char e[2000],c;
int a[50],i,n,j,lg,rt;
int EvalExp();
int EvalTermen();
int EvalFactor();
int main()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
for (i=0;e[i-1]!='\n';i++)
{
scanf("%c",&e[i]);
}
lg=i-1;
j=-1;
for (i=0;i<lg;i++)
if (e[i]!=' ')
{
j++;
e[j]=e[i];
}
lg=j+1;e[lg]='\0';
scanf("%d",&n);
scanf("%c");
for (i=1;i<=28;i++)
a[i]=0;
for (rt=1;rt<=n;rt++)
{
scanf("%c",&c);
if (a[c-'A']==0) a[c-'A']=1;
else a[c-'A']=0;
i=0;
printf("%d",EvalExp());
}
printf("\n");
return 0;
}
int EvalExp()
{int r=EvalTermen(),q;
while (i<lg && e[i]=='O' && e[i+1]=='R')
{
i+=2;
q=EvalTermen();
if (q>r) r=q;
}
return r;
}
int EvalTermen()
{int f=EvalFactor(),q;
while (e[i]=='A' && e[i+1]=='N')
{
i+=3;
q=EvalFactor();
if (q<f) f=q;
}
return f;
}
int EvalFactor()
{int r;
if (e[i]=='N' && e[i+1]=='O')
{
i+=3;
r=1-EvalTermen();
}
else
if (e[i]=='(')
{
i++;
r=EvalExp();
i++;
}
else
if (e[i]=='T' && e[i+1]=='R')
{
i+=4;
r=1;
}
else
if (e[i]=='F' && e[i+1]=='A')
{
i+=5;
r=0;
}
else
{
i++;
r=a[e[i-1]-'A'];
}
return r;
}