Cod sursa(job #151727)

Utilizator a7893Nae Mihai a7893 Data 8 martie 2008 16:06:35
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<stdio.h>
#include<string.h>
#define N 100001
char e[N];
int i,lg;
int EvalExpr();
int EvalFact();
int EvalTer();
int eval()
{
	int x=0;
	while(e[i]>='0'&&e[i]<='9')
	{
		x=x*10+(e[i]-'0');
		i++;
	}
	return x;
}
int EvalTer()
{
	int f=EvalFact();
	while(i<lg&&(e[i]=='*'||e[i]=='/'))
	{
		i++;
		if(e[i-1]=='*')
			f*=EvalFact();
		if(e[i-1]=='/')
			f/=EvalFact();
	}
	return f;
}
int EvalExpr()
{
	int t=EvalTer();
	while(i<lg&&e[i]=='+')
	{
		i++;
		t+=EvalTer();
	}
	return t;
}
int EvalFact()
{
	int f;
	if(e[i]=='(')
	{
		i++;
		f=EvalExpr();
		i++;
	}
	else
	{
		f=eval();
	}
	return f;
}
int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	scanf("%s\n",&e);
	lg=strlen(e);
	printf("%d\n",EvalExpr());
	return 0;
}