Pagini recente » Cod sursa (job #1708197) | Cod sursa (job #574667) | Cod sursa (job #896688) | Cod sursa (job #806912) | Cod sursa (job #290767)
Cod sursa(job #290767)
#include<stdio.h>
#include<string.h>
long l,i,st[1005],a[1005],n,j,la,lst,f[1005];
char expr[1005],sir[1005];
int main()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
gets(expr);
l=strlen(expr);
for(i=0;i<l;++i)
{
if(expr[i]=='T'&&expr[i+1]=='R'){a[++la]=1;i+=3;}
else
if(expr[i]=='F'&&expr[i+1]=='A'){a[++la]=0;i+=4;}
else
if(expr[i]>='A'&&expr[i]<='Z'&&(expr[i+1]==' '||expr[i+1]==')'))a[++la]=expr[i];
else
if(expr[i]=='N'&&expr[i+1]=='O')
{while(st[lst]>=-1&&lst)a[++la]=st[lst--];
st[++lst]=-1;
i+=2;}
else
if(expr[i]=='A'&&expr[i+1]=='N')
{while(st[lst]>=-2&&lst)a[++la]=st[lst--];
st[++lst]=-2;
i+=2;}
else
if(expr[i]=='O'&&expr[i+1]=='R')
{while(st[lst]>=-3&&lst)a[++la]=st[lst--];
st[++lst]=-3;
i+=1;}
else
if(expr[i]=='(')st[++lst]=-10;
else
if(expr[i]==')')
{while(st[lst]!=-10&&lst)a[++la]=st[lst--];
--lst;}
}
while(lst)a[++la]=st[lst--];
scanf("%ld\n",&n);
gets(sir);
for(i=1;i<=n;++i)
{f[sir[i-1]]=!f[sir[i-1]];
lst=0;
for(j=1;j<=la;++j)
{if(a[j]>2)st[++lst]=f[a[j]];
if(a[j]==1)st[++lst]=1;
if(a[j]==0)st[++lst]=0;
if(a[j]==-1)st[lst]=!st[lst];
if(a[j]==-2)st[--lst]=st[lst]&&st[lst+1];
if(a[j]==-3)st[--lst]=st[lst]||st[lst+1];}
printf("%ld",st[lst]);}
printf("\n");
return 0;
}