Cod sursa(job #303567)

Utilizator loginLogin Iustin Anca login Data 9 aprilie 2009 23:39:50
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
# include <fstream>
using namespace std;
char s[100010], *p=s;

long long termen ();
long long factor ();

long long eval ()
{
	long long r=termen ();
	while (*p=='+' || *p=='-')
		switch (*p)
		{
			case '+':{++p;
				      r+=termen ();
					  break;}
			case '-':{++p; 
				      r-=termen ();
					  break;}
		}
	return r;
}


long long termen ()
{
	long long r=factor();
	while (*p=='*' || *p=='/')
		switch (*p)
		{
			case '*':{++p;
			          r*=factor ();
					  break;}
			case '/':{++p;
			          r/=factor ();
					  break;}
		}
	return r;
}

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

int main ()
{
	ifstream fin ("evaluare.in");
	fin.getline (s, 100010);
	ofstream fout ("evaluare.out");
	fout<<eval ();
	return 0;
}