Cod sursa(job #626396)

Utilizator toniobFMI - Barbalau Antonio toniob Data 26 octombrie 2011 23:33:55
Problema Bool Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
using namespace std;

ifstream in ("bool.in");
ofstream out ("bool.out");

const int N = 1003;
char s[N], *p, c;
bool valoare[40];
int n;

bool expresie(),factor(),termen();
bool expresie () {
	bool rez = factor ();
	while (*p == 'A' && *(p+1) == 'N') {
		p += 4;
		rez = rez && factor ();
	}
	return rez;
}
bool factor () {
	bool rez = termen ();
	while (*p == 'O' && *(p+1) == 'R') {
		p += 3;
		rez = rez || termen ();
	}
	return rez;
}
bool termen () {
	bool val, semn = true;
	if (*p == 'N' && *(p+1) == 'O') {
		semn = false;
		p+=4;
	}
	if (*p == '(') {
		++p;
		val = expresie ();
		p+=2;
		if (semn) return val;
			else return not val;
	}
	val = valoare[*p - 'A'];
	p += 2;
	if (semn) return val;
		else return not val;
}

void citire () {
	in.getline (s);
	in >> n >> ws;
	for (;n--;) {
		p = s;
		in >> c;
		valoare[c-'A'] = 1;
		out << expresie ();
		valoare[c-'A'] = 0;
	}
}

int main (){
	citire();
	
	return 0;
}