Cod sursa(job #439156)

Utilizator sorecau_catalinSorecau Catalin sorecau_catalin Data 11 aprilie 2010 13:35:18
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb

#include <cstdio>



char s[100010];
char *p;
long Termen();
long Factor();
long Eval();

int main()
{
	fgets(s, 100010, fopen("evaluare.in", "r"));
	fprintf(fopen("evaluare.out", "w"), "%ld\n", Eval());
	return 0;
}

long Eval()
{
	long r = Termen();
	while ( *p ='+' || *p == '-' )
	{
		if ( *p == '+' )
		{
			++p;
			r += Termen();
			break;
		}
		else
		{
			++p;
			r -= Termen();
			break;
		}
	}
	return r;
}

long Termen()
{
	long r = Factor();
	while ( *p == '*' || *p == '/' )
	{
		if ( *p == '*' )
		{
			++p;
			r *= Factor();
			break;
		}
		else
		{
			++p;
			r /= Factor();
			break;
		}
	}
	return r;
}

long Factor()
{
	long r = 0;
	if ( *p == '(' )
	{
		++p;
		r = Eval();
		++p;
	}
	else
	{
		while ( *p >= '0' && *p <= '9' )
		{
			r = r * 10 + *p - '0';
			++p;
		}
	}
		return r;
}