Cod sursa(job #411439)

Utilizator evvaluatorevvaluator evvaluator Data 4 martie 2010 21:42:05
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<cstdio>
char s[100010],*p=s;
int fact();
int term();
int rez()
{
	int r=fact();
	if(*p=='+')
	{
		p++;
		r=r+fact();
	}
	else if(*p=='-')
	{
		p++;
		r=r-fact();
	}
	return r;
}
int fact()
{
	int r=term();
	if(*p=='*')
	{
		p++;
		r=r*term();
	}
	else if(*p=='/')
	{
		p++;
		r=r/term();
	}
	return r;
}
int term()
{
	int r=0;
	if(*p=='(')
	{
		p++;
		r=rez();
		p++;
	}
	else
	while(*p>='0'&&*p<='9')
	{
		r=r*10+*p-'0';
		p++;
	}
	return r;
}
int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	fgets(s,100010,stdin);
	printf("%d",rez());
	return 0;
}