Pagini recente » Cod sursa (job #425394) | Cod sursa (job #228579) | Cod sursa (job #1931086) | Cod sursa (job #344886) | Cod sursa (job #1497873)
#include <iostream>
#include<cstdio>
#include<string.h>
using namespace std;
char si[1001], s[1001],*c=si;
int k=-1;
void expresie()
{
while(*c!='\n'&&*c!=NULL)
{
if(*c=='A'&&*(c+1)=='N'&&*(c+2)=='D')
{
s[++k]='&';
++c;
++c;
++c;
}
else
{
if(*c=='O'&&*(c+1)=='R')
{
s[++k]='|';
++c;
++c;
}
else
{
if(*c=='N'&&*(c+1)=='O'&&*(c+2)=='T')
{
s[++k]='!';
++c;
++c;
++c;
}
else
{
if(*c=='T'&&*(c+1)=='R'&&*(c+2)=='U'&&*(c+3)=='E'){
s[++k]=1;
++c;
++c;
++c;
++c;
}
else
{
if(*c=='F'&&*(c+10)=='A'&&*(c+2)=='L'&&*(c+3)=='S'&&*(c+4)=='E'){
s[++k]=0;
++c;
++c;
++c;
++c;
++c;
}
else
{
s[++k]=*c;
++c;
}
}
}
}
}
if(*c==' ')
++c;
}
}
int val[27];
int andf(char* &p);
int notf(char* &p);
int numar(char* &p);
int evaluare(char*&p)
{
int r=andf(p);
while(*p=='|')
{
++p;
r=(r|andf(p));
}
return r;
}
int andf(char* &p)
{
int r=numar(p);
while(*p=='&')
{
++p;
r=(r&numar(p));
}
return r;
}
int numar(char* &p)
{
int r=0;
if(*p=='(')
{
++p;
r=evaluare(p);
++p;
}else{
if(*p==0||*p==1){
r=*p;
++p;
}else{
if(*p>='A'&&*p<='Z'){
r=val[*p-'A'+1];
++p;
}else{
if(*p=='!')
{
++p;
r=evaluare(p);
if(r==1)
r=0;
else r=1;
}}}}
return r;
}
int main()
{
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
int n, i;
char f;
gets(si);
expresie();
scanf("%d\n", &n);
for(i=1;i<=n;i++)
{
char *sir=s;
scanf("%c", &f);
if(val[f-'A'+1]==0)
val[f-'A'+1]=1;
else val[f-'A'+1]=0;
printf("%d", evaluare(sir));
}
return 0;
}