Pagini recente » Cod sursa (job #737345) | Cod sursa (job #2971265) | Cod sursa (job #737370) | Cod sursa (job #2862424) | Cod sursa (job #3216177)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("bool.in");
ofstream fout ("bool.out");
int i, n, freq[100];
char s[1001], x;
bool expresie();
bool termen();
bool constanta();
int main()
{
fin.getline(s, 1001);
fin >> n;
while (n)
{
fin >> x;
if (freq[int(x) - 'A']) freq[(int)x - 'A'] --;
else
freq[(int)x - 'A'] ++;
i = 0;
fout << expresie();
n --;
}
return 0;
}
bool expresie()
{
bool r = termen();
i ++;
while ((s[i] == 'A' && s[i + 1] == 'N') || (s[i] == 'O' && s[i + 1] == 'R'))
{
if (s[i] == 'A' && s[i + 1] == 'N')
{
i += 4;
r &= termen();
}
else if (s[i] == 'O' && s[i + 1] == 'R')
{
i += 3;
r |= termen();
}
}
return r;
}
bool termen()
{
bool r;
if (s[i] == '(')
{
i ++;
r = expresie();
i ++;
}
else
r = constanta();
return r;
}
bool constanta()
{
bool r = 0;
if (s[i] == 'N' && s[i + 1] == 'O')
r = !r, i += 4;
if (s[i] == 'T' && s[i + 1] == 'R')
r = 1, i += 4;
else if (s[i] == 'F' && s[i] == 'A')
r = 0, i += 5;
if (freq[int(s[i]) - 'A']) r = !r;
i ++;
return r;
}