Pagini recente » Cod sursa (job #456728) | Cod sursa (job #1539179) | Statistici Dancu Laurentiu aka (laue) | Cod sursa (job #2858831) | Cod sursa (job #1818472)
#include <iostream>
#include <stdio.h>
using namespace std;
const int N=1010;
char s[N], op[101];
int p;
bool v[26];
bool expresie();
bool termen();
bool factor();
bool expresie()
{
bool v1=termen();
while(s[p]=='|')
{
p++;
v1=(v1||termen());
}
return v1;
}
bool termen()
{
bool v2=factor();
while(s[p]=='&')
{
p++;
v2=(v2&&factor());
}
return v2;
}
bool factor()
{
bool semn=true,val;
while(s[p]=='!')
{
p++;
semn=(!semn);
}
if(s[p]=='(')
{
p++;
val=expresie();
p++;
if (semn) return val;
return !val;
}
val=v[s[p]-'A'];
p++;
if (semn) return val;
return !val;
}
int main()
{
int n,k=0,i;
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
gets(s);
scanf("%d\n",&n);
gets(op);
for(i=0; s[i]; i++)
{
if(s[i]=='T'&&s[i+1]=='R')
{
s[k++]='1';
i+=3;
}
else if(s[i]=='F'&&s[i+1]=='A')
{
s[k++]='0';
i+=4;
}
else if(s[i]=='O'&&s[i+1]=='R')
{
s[k++]='|';
i++;
}
else if(s[i]=='A'&&s[i+1]=='N')
{
s[k++]='&';
i+=2;
}
else if(s[i]=='N'&&s[i+1]=='O')
{
s[k++]='!';
i+=2;
}
else if(s[i]!=' ')
s[k++]=s[i];
}
s[k++]='\0';
for(i=0; i<n; i++)
{
p=0;
v[op[i]-'A'] = (!v[op[i]-'A']);
printf("%d",expresie());
}
return 0;
}