Pagini recente » Cod sursa (job #1328195) | Cod sursa (job #450182) | Cod sursa (job #2030606) | Cod sursa (job #1026759) | Cod sursa (job #1322913)
#include <fstream>
using namespace std;
ifstream cin("bool.in");
ofstream cout("bool.out");
int n,i;
char S[1005],*p=S,ch,v[1005];
bool or_();
bool and_();
bool termen() {
bool b=0;
if(*p=='(')
{
p++;
b=or_();
p++;
}
else if(*p=='F' and *(p+1)=='A')
{
p+=6;
b=0;
}
else if(*p=='T' and *(p+1)=='R')
{
p+=5;
b=1;
}
else if(*p=='N' and *(p+1)=='O')
{
p+=4;
b=!termen();
}
else
{
b=v[*p-'A'];
p+=2;
}
return b;
}
bool and_() {
bool b=termen();
while(*p=='A' and *(p+1)=='N')
{
p+=4;
b=b && termen();
}
return b;
}
bool or_()
{
bool b=and_();
while(*p=='O' and *(p+1)=='R')
{
p+=3;
b=b || and_();
}
return b;
}
int main() {
cin.getline(S,1005);
cin>>n;
for(i=1;i<=n;i++)
{
cin>>ch;
v[ch-'A']=!v[ch-'A'];
p=S;
cout<<or_();
}
return 0;
}