Pagini recente » Cod sursa (job #678218) | Cod sursa (job #3162069) | Cod sursa (job #3124353) | Cod sursa (job #981891) | Cod sursa (job #1823619)
#include <iostream>
#include <string.h>
#include <fstream>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
const int N=10001;
int n,p=0,d=0;
bool v[N];
char c[N],s[N],schimb;
bool exp();
bool fact();
void simplificare()
{
for(int p=0; p<n; p++)
{
if(c[p]=='A'&&c[p+1]=='N'&&c[p+2]=='D')
{
s[d]='&';
p+=2;
d++;
}
else if(c[p]=='O'&&c[p+1]=='R')
{
s[d]='|';
p+=1;
d++;
}
else if(c[p]=='N'&&c[p+1]=='O'&&c[p+2]=='T')
{
s[d]='!';
p+=2;
d++;
}
else if(c[p]=='T'&&c[p+1]=='R'&&c[p+2]=='U'&&c[p+3]=='E')
{
s[d]='1';
p+=3;
d++;
}
else if(c[p]=='F'&&c[p+1]=='A'&&c[p+2]=='L'&&c[p+3]=='S'&&c[p+4]=='E')
{
s[d]='0';
p+=4;
d++;
}
else if(c[p]!=' ')
{
s[d]=c[p];
d++;
}
}
p=0;
}
bool exp()
{
bool rez;
rez=fact();
while(s[p]=='&'||s[p]=='|'||s[p]=='!')
{
if(s[p]=='&')
{
p++;
rez=(rez&&fact());
}
else if(s[p]=='|')
{
p++;
rez=(rez||fact());
}
else if(s[p]=='!')
{
p++;
rez=!rez;
}
}
return rez;
}
bool fact()
{
bool val;
if(s[p]=='(')
{
p++;
val=exp();
p++;
return val;
}
if(isdigit(s[p]))
{
val=(bool)(s[p]-'0');
}
else if(schimb==s[p])
{
v[s[p]]=!v[s[p]];
val=v[s[p]];
}
else
{
val=v[s[p]];
}
return val;
}
int main()
{
int i,len;
fin.getline(c,N);
n=strlen(c);
simplificare();
fin>>len;
for(i=1; i<=len; i++)
{
fin>>schimb;
fout<<exp();
}
return 0;
}