Pagini recente » Cod sursa (job #1129265) | Cod sursa (job #1191973) | Cod sursa (job #475304) | Cod sursa (job #2494023) | Cod sursa (job #1691361)
#include <cstdio>
using namespace std;
int i,n,j;
bool nr,nr2,a[30];
char s[1004],x;
bool eval ();
bool factor()
{
bool nr=false;
if (s[i]=='(')
{
i++;
nr=eval();
i+=2;
}
else if ((s[i]=='T' && s[i+1]=='R') || (s[i]=='F' && s[i+1]=='A') || ((s[i]>='A' && s[i]<='Z') && (s[i+1]<'A' || s[i+1]>'Z')))
{
if (s[i]=='T' && s[i+1]=='R')
{
i+=5;
nr=true;
}
else if (s[i]=='F' && s[i+1]=='A')
{
i+=6;
nr=false;
}
else
{
nr=a[s[i]-'A'];
i+=2;
}
}
return nr;
}
bool fact ()
{
bool nr=true;
nr=factor();
while (s[i]=='N' && s[i+1]=='O')
{
if (a[s[i+4]-'A']==false)
a[s[i+4]-'A']=true;
else
a[s[i+4]-'A']=false;
i+=4;
nr=factor();
if (a[s[i+4]-'A']==false)
a[s[i+4]-'A']=true;
else
a[s[i+4]-'A']=false;
}
return nr;
}
bool termen ()
{
bool nr=true;
nr=fact();
while (s[i]=='A' && s[i+1]=='N')
{
i+=4;
nr2=fact();
if (nr==true && nr2==true)
nr=true;
else
nr=false;
}
return nr;
}
bool eval ()
{
bool nr=true;
nr=termen();
while (s[i]=='O' && s[i+1]=='R')
{
i+=3;
nr2=termen();
if (nr==true || nr2==true)
nr=true;
else
nr=false;
}
return nr;
}
int main()
{
freopen ("bool.in","r",stdin);
freopen ("bool.out","w",stdout);
gets(s);
scanf ("%d\n", &n);
for (j=1;j<=n;j++)
{
scanf ("%c", &x);
if (a[x-'A']==false)
a[x-'A']=true;
else
a[x-'A']=false;
i=0;
nr=eval();
if (nr==true)
printf ("1");
else
printf ("0");
}
return 0;
}