Pagini recente » Cod sursa (job #45470) | Cod sursa (job #21780) | Cod sursa (job #22267) | Monitorul de evaluare | Cod sursa (job #4240)
Cod sursa(job #4240)
#include<stdio.h>
char e[1001],s[101];
int v[26],n,p;
int evalexp(void);
void read(void)
{ int k=-1;
freopen("bool.in","r",stdin);
while(1)
{ scanf("%c",&e[++k]);
if(e[k]=='\n')
{ e[k]=0;
break; } }
scanf("%d%s",&n,s); }
int evalop2(void)
{ int r,n=0;
if(e[p]=='N'&&e[p+1]=='O') { n=1; p+=4; }
if(e[p]=='T'&&e[p+1]=='R') { r=1; p+=4; }
else
if(e[p]=='F'&&e[p+1]=='A') { r=0; p+=5; }
else
if(e[p]=='(') { p++; r=evalexp(); p++; }
else { r=v[e[p]-'A']; p++; }
return n?!r:r; }
int evalop1(void)
{ int r=evalop2();
while(e[p]&&e[p+1]=='A')
{ p+=5;
r&=evalop2(); }
return r; }
int evalexp(void)
{ int r=evalop1();
while(e[p]&&e[p]!=')')
{ p+=4;
r|=evalop1(); }
return r; }
void solve(void)
{ int i;
freopen("bool.out","w",stdout);
for(i=0;i<n;i++,p=0)
{ v[s[i]-'A']=!v[s[i]-'A'];
printf("%d",evalexp()); }
printf("\n"); }
int main(void)
{ read();
solve();
return 0; }