Pagini recente » Cod sursa (job #2161732) | Cod sursa (job #2771565) | Cod sursa (job #2532354) | Cod sursa (job #1521963) | Cod sursa (job #871834)
Cod sursa(job #871834)
#include <cstdio>
#include <cstring>
#define dim 10001
using namespace std;
int v[dim],n,lg=-1,i;
char s[dim],k,c;
int expr();
int val();
int factor()
{
int f;
if (s[i]=='(')
{
i++;
f=expr();
i++;
}
else
{
f=val();
i++;
}
if (s[i]==' ')
i++;
return f;
}
int termen()
{
int f=factor();
while(i<=lg&&s[i]=='A'&&s[i+1]=='N'&&s[i+2]=='D')
{
i+=4;
f=factor();
}
return f;
}
int expr()
{
int f=termen(),l;
while (i<=lg&&s[i]=='O'&&s[i+1]=='R')
{
i+=3;
l=termen();
f=l;
}
return f;
}
int val()
{
int f;
if (s[i]=='N'&&s[i+1]=='O'&&s[i+2]=='T')
{
i+=3;
if (s[i]==' ')
i++;
f=!expr();
return f;
}
else
if(s[i]=='T'&&s[i+1]=='R'&&s[i+2]=='U')
{
i+=4;
return 1;
}
else
if(s[i]=='F'&&s[i+1]=='A'&&s[i+2]=='L')
{
i+=5;
return 0;
}
else
return v[s[i]-'A'];
}
int main()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
scanf("%c",&c);
while (c!='\n')
{
lg++;
s[lg]=c;
scanf("%c",&c);
}
scanf("%d\n",&n);
for(int I=1;I<=n;I++)
{
scanf("%c",&k);
if(v[k-'A']=!v[k-'A'])
i=0;
printf("%d", expr());
}
}