Cod sursa(job #564124)

Utilizator andunhillMacarescu Sebastian andunhill Data 26 martie 2011 19:21:34
Problema Bool Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<fstream>
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
char a[1001],*p,x;
bool v[26];
int N;
bool exp();
bool fact()
{	bool rez;
	if(*p==' ') p++;
	if(*p=='N' && *(p+1)=='O')
	{	p+=3; return !fact(); }
	if(*p=='T' && *(p+1)=='R')
	{	p+=4; return 1; }
	if(*p=='F' && *(p+1)=='A')
	{	p+=5; return 0; }
	if(*p=='(')
	{	p++; rez=exp(); p++; return rez; }
	p+=2; return v[*(p-2)];
}
bool term()
{	bool rez=fact();
	while(*p && *p=='A')
		p+=3 , rez&=fact();
	return rez;
}
bool exp()
{	bool rez=term();
	while(*p && *p!=')')
		p+=2 , rez|=term();
	return rez;
}
int main()
{	f.get(a,1001);
	f>>N;
	for(int i=1;i<=N;i++)
	{	f>>x; p=a;
		v[x]=(v[x]==0?1:0);
		g<<exp();
	}
	f.close();
	g.close();
	return 0;
}