Cod sursa(job #398904)

Utilizator evaluatoreval uator evaluator Data 19 februarie 2010 17:11:34
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<stdio.h>
char s[100010],*p=s;
int term();
int fact();
int eval()
{
	int r=term();
	while(*p=='+'||*p=='-')
		if(*p=='+') {++p; r+=term();}
	else {++p;r-=term();}
	return r;
}

int term()
{
	int r=fact();
	while(*p=='*'||*p=='/')
	{
		if(*p=='*') {p++;r*=fact();}
		else {p++;r/=fact();}
	}
	return r;
}

int fact()
{
	int r=0;
	if(*p=='(')
	{
		++p;
		r=eval();
		++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",eval());
	return 0;
}