Pagini recente » Cod sursa (job #2293118) | Cod sursa (job #2589641) | Cod sursa (job #60642) | Cod sursa (job #3199358) | Cod sursa (job #3216240)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("bool.in");
ofstream fout ("bool.out");
int i, n, freq[100];
char s[1001], aux[1001], x;
bool expresie();
bool termen();
bool constanta();
int main()
{
fin.getline(aux, 1001);
fin >> n;
for (int i = 0; i < strlen(aux); i ++)
{
if (aux[i] != ' ')
strncat(s, aux + i, 1);
}
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();
while (s[i] == 'O' && s[i + 1] == 'R')
{
i += 2;
r |= termen();
}
return r;
}
bool termen()
{
bool r = constanta();
while (s[i] == 'A' && s[i + 1] == 'N' && s[i + 2] == 'D')
{
i += 3;
r &= constanta();
}
return r;
}
bool constanta()
{
bool r = 0;
if (s[i] == '(')
{
i ++;
r = expresie();
i ++;
}
else if (s[i] == 'N' && s[i + 1] == 'O')
i += 3, r = !constanta();
else if (s[i] == 'T' && s[i + 1] == 'R')
r = 1, i += 4;
else if (s[i] == 'F' && s[i] == 'A')
r = 0, i += 5;
else
r = freq[int(s[i]) - 'A'], i ++;
return r;
}