Pagini recente » Cod sursa (job #1626555) | Cod sursa (job #1934673) | Cod sursa (job #521612) | Cod sursa (job #2800495) | Cod sursa (job #979882)
Cod sursa(job #979882)
#include <fstream>
using namespace std;
char c;
char s[1001];
int status[40];
int i,n,u;
int pr2();int pr3();
int pr1 ()
{
int res = pr2 ();
while (s[i]=='O'&&s[i+1]=='R')
{
i+=2;
res |= pr2();
}
return res;
}
int pr2 ()
{
int res = pr3 ();
while (s[i]=='A'&&s[i+1]=='N'&&s[i+2]=='D')
{
i+=3;
res &= pr3();
}
return res;
}
int pr3 ()
{
int res=0;
if (s[i]=='(')
{
++i;
res = pr1();
++i;
}
else if (s[i]=='N' && s[i+1]=='O'&&s[i+2]=='T') {i+=3; res=!pr3();}
else if (s[i]=='T' && s[i+1]=='R') {i+=4; res=1;}
else if (s[i]=='F' && s[i+1]=='A'&&s[i+2]=='L') {i+=5; res=0;}
else { res = status [s[i]-'A']; ++i;}
return res;
}
int main()
{
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
while (1)
{
scanf("%c", &c);
if (c==' ') continue;
if(c == '\n') break;
s[u++] = c;
}
scanf ("%d\n",&n);
for (int j=1; j<=n; j++)
{
scanf ("%c",&c);
status [c-'A'] = status[c-'A']^1;
i = 0;
printf ("%d",pr1());
}
return 0;
}