Pagini recente » Cod sursa (job #263714) | Cod sursa (job #794087) | Cod sursa (job #3157675) | Cod sursa (job #1901425) | Cod sursa (job #2742454)
#include <fstream>
#include <string>
using namespace std;
const int SIGMA = 26;
int poz;
string linie;
bool val[SIGMA];
bool si();
bool sau();
bool paranteze();
bool expresie()
{
bool sol = sau();
while (poz < linie.size() - 3 && linie[poz] == ' ' && linie[poz + 1] == 'O' && linie[poz + 2] == 'R' && linie[poz + 3] == ' ')
{
poz += 4;
sol = sol || sau();
}
return sol;
}
bool sau()
{
bool sol = si();
while (poz < linie.size() - 4 && linie[poz] == ' ' && linie[poz + 1] == 'A' && linie[poz + 2] == 'N' && linie[poz + 3] == 'D' && linie[poz + 4] == ' ')
{
poz += 5;
sol = sol && si();
}
return sol;
}
bool si()
{
bool sol = paranteze();
return sol;
}
bool paranteze()
{
bool sol;
if (poz < linie.size() - 1 && linie[poz] == '(')
{
poz++;
sol = expresie();
poz++;
}
else if (poz < linie.size() - 3 && linie[poz] == 'N' && linie[poz + 1] == 'O' && linie[poz + 2] == 'T' && linie[poz + 3] == ' ')
{
poz += 4;
sol = !expresie();
}
else if (poz < linie.size() - 3 && linie[poz] == 'T' && linie[poz + 1] == 'R' && linie[poz + 2] == 'U' && linie[poz + 3] == 'E')
{
poz += 4;
sol = true;
}
else if (poz < linie.size() - 4 && linie[poz] == 'F' && linie[poz + 1] == 'A' && linie[poz + 2] == 'L' && linie[poz + 3] == 'S' && linie[poz + 4] == 'E')
{
poz += 5;
sol = false;
}
else if (poz < linie.size())
{
sol = val[linie[poz] - 'A'];
poz++;
}
return sol;
}
int main()
{
ifstream in("bool.in");
ofstream out("bool.out");
getline(in, linie);
int n;
in >> n;
for (int i = 1; i <= n; i++)
{
char c;
in >> c;
val[c - 'A'] = !val[c - 'A'];
poz = 0;
out << expresie();
}
return 0;
}