Pagini recente » Cod sursa (job #408890) | Cod sursa (job #2202643) | Cod sursa (job #3281368) | Cod sursa (job #2602258) | Cod sursa (job #549535)
Cod sursa(job #549535)
#include<stdio.h>
#include<string.h>
#define Nmax 1009
int n=0,i,j,b[Nmax],nr,val[Nmax];
char a[Nmax],x,s[Nmax],*p=s;
int exp();
int f();
int t();
void initializare()
{
while ((*p>='A'&&*p<='Z')||(*p==')')||(*p=='(')||(*p==' '))
{
if (*p==' ')
p++;
else if (*p=='T'&&*(p+1)=='R'&&*(p+2)=='U'&&*(p+3)=='E')
{
p+=4;
a[++n]='1';
}
else if (*p=='F'&&*(p+1)=='A'&&*(p+3)=='L'&&*(p+4)=='S'&&*(p+5)=='E')
{
p+=5;
a[++n]='0';
}
else if ((*p)=='O'&&*(p+1)=='R')
{
p+=2;
a[++n]='|';
}
else if ((*p)=='N'&&*(p+1)=='O'&&*(p+2)=='T')
{
p+=3;
a[++n]='!';
}
else if ((*p)=='A'&&*(p+1)=='N'&&*(p+2)=='D')
{
p+=3;
a[++n]='&';
}
else if (*p=='(')
{
p++;
a[++n]='(';
}
else if (*p==')')
{
p++;
a[++n]=')';
}
else
{
a[++n]=*p;
p++;
}
}
}
int eval()
{
int semn=f();
while (a[i]=='|')
{
i++;
semn|=f();
}
return semn;
}
int f()
{
int semn=t();
while (a[i]=='&')
{
i++;
semn&=t();
}
return semn;
}
int t()
{
int semn=1;
while (a[i]=='!')
{
if (semn==0) semn=1;
else semn=0;
i++;
}
if (a[i]=='(')
{
i++;
int r=eval();
i++;
if (semn==1) return r;
return (!r);
}
int r;
if (a[i]=='0') r=0;
if (a[i]=='1') r=1;
if (a[i]!='0'&&a[i]!='1') r=val[a[i]];
i++;
if (semn==1) return r;
return (!r);
}
int main()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
gets(s);
initializare();
scanf("%d\n",&nr);
for (int ii=1;ii<=nr;ii++)
{
scanf("%c",&x);
if (val[x]==0) val[x]=1;
else val[x]=0;
i=1;
printf("%d",eval());
}
return 0;
}