Pagini recente » Cod sursa (job #2342639) | Cod sursa (job #1094322) | Cod sursa (job #896610) | Cod sursa (job #1420776) | Cod sursa (job #1833369)
#include<cstdio>
#include<cstring>
char v[1001],vec[1010];
bool vc[27];
int q,n;
bool exp();
bool term();
bool fact();
bool exp()
{bool rez;
int pp=0;
if(v[q]=='(')
{q++;
pp=1;
rez=term();
}
else
if(pp==0&&((v[q]>='A'&&v[q]<='Z')||v[q]==0||v[q]==1))
{pp=1;
rez=term();
}
while(q<n&&v[q]=='|')
{q++;
rez=(rez|term());
}
q++;
return rez;
}
bool term()
{int pp=0;
while(v[q]=='!')
{pp=1-pp;
q++;
}
if(pp==0)
return fact();
else
return (!fact());
}
bool fact()
{bool rez;
if(v[q]==0)
{q++;
rez=0;
}
else
if(v[q]==1)
{q++;
rez=1;
}
else
if(v[q]>='A'&&v[q]<='Z')
{rez=vc[v[q]-'A'+1];
q++;
}
else
if(v[q]=='(')
{q++;
rez=exp();
}
if(v[q]=='&')
{q++;
rez=(rez&exp());
}
return rez;
}
int main ()
{freopen ("bool.in","r",stdin);
freopen ("bool.out","w",stdout);
int m,i,j,k;
char a;
gets(vec);
scanf("%d ",&m);
k=strlen(vec);
n=0;
for(i=0;i<k;i++)
if(vec[i]!=' ')
if(vec[i]=='('||vec[i]==')')
{n++;
v[n]=vec[i];
}
else if(vec[i]=='T'&&vec[i+1]=='R')
{n++;
i+=3;
v[n]=1;
}
else if(vec[i]=='F'&&vec[i+1]=='A')
{n++;
i+=4;
v[n]=0;
}
else if(vec[i]=='A'&&vec[i+1]=='N')
{n++;
i+=2;
v[n]='&';
}
else if(vec[i]=='O'&&vec[i+1]=='R')
{n++;
i++;
v[n]='|';
}
else if(vec[i]=='N'&&vec[i+1]=='O')
{n++;
i+=2;
v[n]='!';
}
else
{n++;
v[n]=vec[i];
}
int sqq;
for(i=1;i<=m;i++)
{scanf("%c",&a);
vc[a-'A'+1]=(!vc[a-'A'+1]);
q=1;
sqq=exp();
printf("%d",sqq);
}
return 0;
}