Pagini recente » Cod sursa (job #2120011) | Cod sursa (job #1705822) | Cod sursa (job #778695) | Cod sursa (job #2627584) | Cod sursa (job #627303)
Cod sursa(job #627303)
#include<stdio.h>
bool expresie();
bool termen();
bool operat();
bool non();
bool adv();
bool fals();
char *p,s[1002],f['Z'+5];
int main()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
int n,i; char z;
gets(s);scanf("%d\n",&n);
for(i=1;i<=n;i++)
{
scanf("%c",&z);
if(f[z]==false)
f[z]=true;
else f[z]=false;
p=s;
if(expresie()==true)
{
printf("1");
continue;
}
printf("0");
}
return 0;
}
bool expresie()
{
bool x,y,z;
x=termen();++p;
y=operat();++p;
z=termen();
if((y&x&y)||((!y)&&(x||y)))
return true;
return false;
}
bool termen()
{
int semn=1;bool x;
while(non())
{
semn*=-1;
}
if(*p=='(')
{
++p;
if(adv())
return true;
if(fals())
return false;
x=expresie();
++p;
return x;
}
++p;
return f[*(p-1)];
}
bool operat()
{
while(*p>='A'&&*p<='Z')
{
++p;
}
if(*(p-1)=='R')
return false;
return true;
}
bool adv()
{
if(*p=='T'&&*(p+1)=='R')
{
p+=4;
return true;
}
return false;
}
bool fals()
{
if(*p='F'&&*(p+1)=='A')
{
p+=5;
return true;
}
return false;
}
bool non()
{
if(*p=='N'&&*(p+1)=='O')
{
p+=4;
return true;
}
return false;
}