Pagini recente » Cod sursa (job #1365840) | Cod sursa (job #690168) | Cod sursa (job #1122784) | Istoria paginii runda/simularegrafuri | Cod sursa (job #187979)
Cod sursa(job #187979)
#include<stdio.h>
char e[2000],c;
int a[50],i,n,j,lg,rt;
int EvalExp();
int EvalTermen();
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;
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]=='A' && e[i+1]=='N')
{
i+=3;q=EvalTermen();
if (q<r)
r=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 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;
}