Pagini recente » Cod sursa (job #2980713) | Cod sursa (job #545032) | Cod sursa (job #777478) | Cod sursa (job #2878609) | Cod sursa (job #1101046)
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
int c[27];
char e[1002],e2[102];
int i,n,lg;
bool eMare(char c)
{
if((c>='A')&&(c<='Z')) return 1;
return 0;
}
bool eAnd()
{
if(e[i]=='A'&&e[i+1]=='N')return 1;
return 0;
}
bool eOr()
{
if(e[i]=='O'&&e[i+1]=='R')return 1;
return 0;
}
bool eNot()
{
if(e[i]=='N'&&e[i+1]=='O')return 1;
return 0;
}
bool eTrue()
{
if(e[i]=='T'&&e[i+1]=='R')return 1;
return 0;
}
bool eFalse()
{
if(e[i]=='F'&&e[i+1]=='A')return 1;
return 0;
}
bool evalExp1();
bool evalExp2();
bool evalExp3();
bool evalExp1()
{
bool r=evalExp2();
while(eOr())
{
i=i+3;
r=evalExp2()|r;
}
return r;
}
bool evalExp2()
{
bool r=evalExp3();
while(eAnd())
{
i=i+4;
r=evalExp3()&r;
}
return r;
}
bool evalExp3()
{
bool r;
if(e[i]=='(')
{
i++;
r=evalExp1();
i++;
}
else if(eMare(e[i]))
{
if(eNot())
{
i=i+4;
r= !(evalExp3());
}
else if(eTrue())
{ i=i+5;
return 1;
}
else if(eFalse())
{
i=i+6;
return 0;
}
else
{
r=c[e[i]-'A'];
i=i+2;
}
}
return r;
}
int main()
{
int q;
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
fgets(e,100,stdin);
lg=strlen(e);
scanf("%d",&n);
scanf("%s",e2);
for(q=0;q<n;q++)
{
i=0;
c[e2[q]-'A']=!(c[e2[q]-'A']);
printf("%d",evalExp1());
}
}