Pagini recente » Cod sursa (job #210881) | Cod sursa (job #1178229) | Cod sursa (job #1185036) | Cod sursa (job #1356661) | Cod sursa (job #2083301)
#include <cstdio>
using namespace std;
bool aux,v[30];
char *p,a[1005],x;
int n,i,nr;
bool eval();
bool termen();
bool factor();
bool eval()
{
bool r;
r=termen();
while(*p=='O' && *(p+1)=='R')
{
p+=3;
r=r|termen();
}
return r;
}
bool termen()
{
bool r;
r=factor();
while(*p=='A' && *(p+1)=='N')
{
p+=4;
r=r&factor();
}
return r;
}
bool factor()
{
bool r;
r=false;
if(*p=='(')
{
p++;
r=eval();
p++;
}
else if(*p=='T' && *(p+1)=='R')
{
r=true;
p+=5;
}
else if(*p=='F' && *(p+1)=='A')
{
r=false;
p+=6;
}
else if(*p=='N' && *(p+1)=='O')
{
p+=4;
r=!factor();
}
else
{
if(v[*p-'A']==false)r=false;
else r=true;
p+=2;
}
return r;
}
int main()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
scanf("%c",&x);
while(x!='\n')
{
a[nr++]=x;
scanf("%c",&x);;
}
scanf("%d\n",&n);
for(i=1;i<=n;i++)
{
scanf("%c",&x);
v[x-'A']=!v[x-'A'];
p=a;
aux=eval();
if(aux) printf("1");
else printf("0");
}
return 0;
}