Pagini recente » Cod sursa (job #846671) | Cod sursa (job #1605621) | Cod sursa (job #1376614) | Cod sursa (job #1295545) | Cod sursa (job #979879)
Cod sursa(job #979879)
#include <fstream>
#include <string>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
char c;
string s;
int status[30];
int i,n;
int pr2(); int pr3(); int pr4();
int pr1 ()
{
while (s[i]==' ') ++i;
int res = pr2 ();
while (s[i]=='O'&&s[i+1]=='R')
{
i+=2;
res |= pr2();
}
return res;
}
int pr2 ()
{
while (s[i]==' ') ++i;
int res = pr3 ();
while (s[i]=='A'&&s[i+1]=='N')
{
i+=3;
res &= pr3();
++i;
}
return res;
}
int pr3 ()
{
while (s[i]==' ') ++i;
if (s[i]=='(')
{
++i;
int res = pr1();
++i;
return res;
}
if (s[i]=='N' && s[i+1]=='O') {i+=3; return !pr3();}
if (s[i]=='T' && s[i+1]=='R') {i+=4; return 1;}
if (s[i]=='F' && s[i+1]=='A') {i+=5; return 0;}
++i; return status [s[i-1]-'A'];
}
int main()
{
getline (fin,s);
fin>>n;
for (int j=1; j<=n; j++)
{
fin>>c;
status [c-'A'] = status[c-'A']^1;
i=0;
fout<< pr1();
}
}