Pagini recente » Cod sursa (job #2950261) | Cod sursa (job #11145) | Monitorul de evaluare | Cod sursa (job #2856084) | Cod sursa (job #4238)
Cod sursa(job #4238)
#include<stdio.h>
char e[1001],s[101];
int v[26],n,p;
int evalexp(void);
void read(void)
{ freopen("bool.in","r",stdin);
gets(e);
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; }