Cod sursa(job #148307)

Utilizator sealTudose Vlad seal Data 4 martie 2008 09:32:01
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<stdio.h>
#define Nm 100001
char S[Nm];
int p;

int EvalExpr(void);

int EvalFact()
{
	int r;

	if(S[p]=='(')
	{
		++p;
		r=EvalExpr();
		++p;
	}
	else
		for(r=0;S[p]>='0' && S[p]<='9';++p)
			r=r*10+S[p]-'0';
	return r;
}

int EvalTerm()
{
	int r=EvalFact();

	while(S[p]=='*' || S[p]=='/')
		if(S[p++]=='*')
			r*=EvalFact();
		else
			r/=EvalFact();
	return r;
}

int EvalExpr()
{
	int r=EvalTerm();

	while(S[p]=='+' || S[p]=='-')
		if(S[p++]=='+')
			r+=EvalTerm();
		else
			r-=EvalTerm();
	return r;
}

int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	scanf("%s",S);
	printf("%d\n",EvalExpr());
	return 0;
}