Pagini recente » Cod sursa (job #2162853) | Cod sursa (job #1589329) | Cod sursa (job #892030) | Cod sursa (job #719448) | Cod sursa (job #627372)
Cod sursa(job #627372)
#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;
if(*p=')') return x;
++p;
y=operat();++p;
z=termen();
if((y&x&z)||((!y)&&(x||z)))
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;
if((semn==1&&x==true)||(semn==-1&&x==false))
return true;
else return false;
}
++p;
x=f[*(p-1)];
if((semn==1&&x==true)||(semn==-1&&x==false))
return true;
else return false;
}
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;
}