Pagini recente » Cod sursa (job #761882) | Cod sursa (job #5582) | Cod sursa (job #980099) | Cod sursa (job #2896371) | Cod sursa (job #2327622)
#include <bits/stdc++.h>
using namespace std;
ifstream in("bool.in");
ofstream out("bool.out");
const int N=1001;
char s[N],t[N];
bool v[27];
int k,p,len;
bool expresie();
bool termen();
bool factor();
void rep()
{
for(int i=0; i<len; ++i)
{
if(t[i]=='T'&&t[i+1]=='R')
{
s[k++]='1';
i+=3;
}
else if(t[i]=='F'&&t[i+1]=='A')
{
s[k++]='0';
i+=3;
}
else if(t[i]=='N'&&t[i+1]=='O')
{
s[k++]='!';
i+=2;
}
else if(t[i]=='A'&&t[i+1]=='N')
{
s[k++]='&';
i+=2;
}
else if(t[i]=='O'&&t[i+1]=='R')
{
s[k++]='|';
i+=1;
}
else if(t[i]!=' ')
{
s[k++]=t[i];
}
}
}
bool expresie()
{
bool ans=termen();
while(s[p]=='|')
{
p++;
ans=(ans||factor());
}
return ans;
}
bool termen()
{
bool ans=factor();
while(s[p]=='&')
{
p++;
ans=(ans&&factor());
}
return ans;
}
bool factor()
{
bool val,n=false;
while(s[p]=='!')
{
p++;
n=true;
}
if(s[p]=='(')
{
p++;
val=expresie();
p++;
if(n)
{
return !val;
}
else
{
return val;
}
}
val=v[s[p]-'A'];
if(n)
{
return !val;
}
else
{
return val;
}
return val;
}
int main()
{
in.getline(t,1000);
int x;
char c;
in>>x;
len=strlen(t);
rep();
for(int i=0;i<x;++i)
{
p=0;
in>>c;
v[c-'A']=!v[c-'A'];
bool raspuns=expresie();
out<<raspuns;
}
return 0;
}