Pagini recente » Cod sursa (job #554570) | Cod sursa (job #1361855) | Cod sursa (job #702073) | Cod sursa (job #1376065) | Cod sursa (job #1077933)
#include <cstdio>
int const N=1001;
char s[N],x;
bool v[N];
int p;
bool expresie();
bool termen();
bool factor();
bool eval();
bool expresie()
{
bool sum=termen();
if(s[p]=='O' && s[p+1]=='R')
{
p+=2;
sum|=termen();
}
return sum;
}
bool termen()
{
bool prod=eval();
if(s[p]=='A' && s[p+1]=='N' && s[p+2]=='D')
{
p+=3;
prod&=termen();
}
return prod;
}
bool eval()
{
if(s[p]=='N' && s[p+1]=='O' && s[p+2]=='T')
{
p+=5;
return !factor();
}
return factor();
}
bool factor()
{
bool val=false;
if(s[p]=='(')
{
p++;
val=expresie();
p++;
return val;
}
if(s[p]=='T' && s[p+1]=='R' && s[p+2]=='U' && s[p+3]=='E')
{
val=true;
p+=4;
}
else
{
if(s[p]=='F' && s[p+1]=='A' && s[p+2]=='L' && s[p+3]=='S' && s[p+4]=='E')
{
val=true;
p+=5;
}
else
{
val=v[s[p]-'A'+1];
p++;
}
}
return val;
}
int main()
{
int i,n;
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
fgets(s,N,stdin);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%c",&x);
v[x-'A'+1]=!v[x-'A'+1];
printf("%d",expresie());
}
return 0;
}