Pagini recente » Cod sursa (job #2436116) | Cod sursa (job #304454) | Cod sursa (job #1455328) | Cod sursa (job #1485709) | Cod sursa (job #3332468)
#include<fstream>
using namespace std;
const int DMAX=1005;
ifstream fin("bool.in");
ofstream fout("bool.out");
char s[DMAX], *p;
int v[26];
int expresie();
int termen();
int factor();
int expresie()
{
int r=termen();
while(*p=='O'&&*(p+1)=='R')
{
p+=3;
r|=termen();
}
return r;
}
int termen()
{
int r=factor();
while(*p=='A'&&*(p+1)=='N'&&*(p+2)=='D')
{
p+=4;
r&=factor();
}
return r;
}
int factor()
{
int r;
if(*p=='(')
{
p++;
r=expresie();
p++;
}
else if(*p=='N'&&*(p+1)=='O'&&*(p+2)=='T')
{
p+=4;
r=!factor();
}
else if(*p=='T'&&*(p+1)=='R'&&*(p+2)=='U'&&*(p+3)=='E')
{
p+=5;
r=1;
}
else if(*p=='F'&&*(p+1)=='A'&&*(p+2)=='L'&&*(p+3)=='S'&&*(p+4)=='E')
{
p+=6;
r=0;
}
else
{
r=v[*p-'A'];
p+=2;
}
return r;
}
int main()
{
int n;
char c;
fin.getline(s,DMAX);
fin>>n;
fin.get();
while(n--)
{
fin.get(c);
v[c-'A']^=1;
p=s;
fout<<expresie();
}
fin.close();
fout.close();
return 0;
}