Pagini recente » Cod sursa (job #1065166) | Cod sursa (job #3123391) | Cod sursa (job #3257533) | Cod sursa (job #2491336) | Cod sursa (job #979876)
Cod sursa(job #979876)
#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();
}
return res;
}
int pr3 ()
{
while (s[i]==' ') ++i;
int res = 0;
while (s[i]=='N'&&s[i+1]=='O')
{
i+=4;
res = 1-res;
}
res = res ^ pr4();
return res;
}
int pr4 ()
{
int res=0;
while (s[i]==' ') ++i;
if (s[i]=='(')
{
++i;
res = pr1();
++i;
return res;
}
else if (s[i]=='T' && s[i+1]=='R') {res=1; i+=4;}
else if (s[i]=='F' && s[i+1]=='A') {res=0; i+=5;}
else {res = status [s[i]-'A']; ++i;}
return res;
}
int main()
{
getline (fin,s);
fin>>n;
for (int j=1; j<=n; j++)
{
fin>>c;
status [c-'A'] = 1 - status[c-'A'];
i=0;
fout<< pr1();
}
}