Pagini recente » Cod sursa (job #1811543) | Istoria paginii runda/test_miron/clasament | Cod sursa (job #2904071) | Cod sursa (job #226740) | Cod sursa (job #1322914)
#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;
}