Cod sursa(job #2017797)

Utilizator mihai.alphamihai craciun mihai.alpha Data 2 septembrie 2017 16:12:05
Problema Bool Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#define NMAX 1005
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
int n, i;
char x[NMAX], ch, *p;
bool v[27], ev();
bool term() {
	bool b = 0;
	if (*p == '(')p++, b = ev(), p++;
	else if (*p == 'F'&&*(p + 1) == 'A') p += 6, b = 0;
	else if (*p == 'T'&&*(p + 1) == 'R') p += 5, b = 1;
	else if (*p == 'N'&&*(p + 1) == 'O') p += 4, b = !term();
	else b = v[*p - 'A'], p += 2;
	return b;
}
bool fact() {
	bool b = term();
	while (*p == 'A'&&*(p + 1) == 'N') p += 4, b = b&term();
	return b;
}
bool ev() {
	bool b = fact();
	while (*p == 'O'&&*(p + 1) == 'R') p += 3, b = b | fact();
	return b;
}
int main() {
	fin.getline(x, NMAX);
	fin >> n;
	for (i = 1; i <= n; i++)
		fin >> ch, v[ch - 'A'] = !v[ch - 'A'], p = x, fout << ev();
	return 0;
}