Pagini recente » Cod sursa (job #2111224) | Cod sursa (job #3261511) | Cod sursa (job #2385577) | Cod sursa (job #3244723) | Cod sursa (job #3142611)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
bool v[30];
char s[1010];
char *p;
ifstream fin ("bool.in");
ofstream fout ("bool.out");
bool eor()
{
if(*p=='O' && *(p+1)=='R')
{
p++;
p++;
if(*p==' ')
p++;
return true;
}
return false;
}
bool eval();
bool si();
bool sau()
{
if(*p==' ')
p++;
bool r=false;
if(*p==' ')
p++;
if(*p=='N' && *(p+1)=='O' && *(p+2)=='T')
{
p++;
p++;
p++;
p++;
if(*p=='(')
{
p++;
r=!eval();
p++;
}
else
return (!v[*p-'A']);
}
else
if(*p=='(')
{
p++;
r=eval();
p++;
}
else
{
p++;
return (v[*(p-1)-'A']);
}
}
bool eval()
{
if(*p==' ')
p++;
bool r=si();
if(*p==' ')
p++;
while(eor())
{
if(*p=='N' && *(p+1)=='O' && *(p+2)=='T')
{
p++;
p++;
p++;
p++;
r=(r||!si()?true:false);
}
else
r=(r||si()?true:false);
}
return r;
}
bool si()
{
if(*p==' ')
p++;
bool r=sau();
if(*p==' ')
p++;
while(*p=='A' && *(p+1)=='N' && *(p+2)=='D')
{
p++;
p++;
p++;
p++;
if(*p=='N' && *(p+1)=='O' && *(p+2)=='T')
{
p++;
p++;
p++;
r=(r && !sau()?true:false);
}
else
r=(r && sau()?true:false);
}
return r;
}
int main()
{
fin.getline(s,1000);
int n;
fin>>n;
char a;
for(int k=1;k<=n;k++)
{
fin>>a;
v[a-'A']=!v[a-'A'];
p=s;
fout<<eval();
}
return 0;
}