Pagini recente » Cod sursa (job #1522997) | Cod sursa (job #1406631) | Cod sursa (job #1936254) | Cod sursa (job #3005705) | Cod sursa (job #1276804)
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
bool litere[40];
int n;
string s;
bool rez(int&i);
bool datermen(int&i)
{
bool raspuns;
bool invers = false;
if (s[i] == 'N'&&s[i + 1] == 'O')
{
i += 4;
invers = true;
}
if (s[i] == '(')
{
i++;
raspuns = rez(i);
}
else if (s[i] == 'T'&&s[i + 1] == 'R')
{
i += 4;
raspuns = true;
}
else if (s[i] == 'F'&&s[i + 1] == 'A')
{
i += 5;
raspuns = false;
}
else if (s[i] >= 'A'&&s[i] <= 'Z' && (s[i + 1]<'A' || s[i + 1]>'Z'))
{
raspuns = litere[s[i] - 65];
i++;
}
if (s[i] == ' '){ i++; }
if (invers)
{
return !raspuns;
}
else
{
return raspuns;
}
}
bool termen(int& i)
{
bool raspuns=datermen(i);
while (s[i] == 'O'&&s[i + 1] == 'R')
{
i += 3;
if (!raspuns)
raspuns=datermen(i);
else
datermen(i);
}
return raspuns;
}
bool rez(int& i)
{
bool raspuns=termen(i);
while (s[i] == 'A'&&s[i + 1] == 'N')
{
i += 4;
if (raspuns)
{
raspuns = termen(i);
}
else
{
termen(i);
}
}
return raspuns;
}
int main()
{
ifstream in("bool.in");
ofstream out("bool.out");
int f, i, j;
char c;
getline(in, s);
n = s.size();
in >> f;
for (i = 1; i <= f; i++)
{
j = 0;
in >> c;
litere[c - 65] = !litere[c - 65];
out << rez(j);
}
}