Cod sursa(job #339084)

Utilizator radu_cppRadu Voroneanu radu_cpp Data 8 august 2009 09:36:52
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>

char s[100010];
int i;
int suma();
int produs();
int termen();

int suma()
{
	int sum,aux,j;
	sum=produs();
	while (s[i]=='+' || s[i]=='-'){
		i++; j=i-1;
		aux=produs();
		if (s[j]=='+')
			sum+=aux;
		else
			sum-=aux;
	}
	return sum;
}

int produs()
{
	int prod,aux,j;
	prod=termen();
	while (s[i]=='/' || s[i]=='*'){
		i++; j=i-1;
		aux=termen();
		if (s[j]=='*')
			prod*=aux;
		else
			prod/=aux;
	}
	return prod;
}

int termen()
{
	int x=0;
	if (s[i]=='(')
	{
		i++;
		x=suma();
		i++;
	}
	else
		while (s[i]<='9' && s[i]>='0'){
			x=x*10+s[i]-'0';
			i++;
		}
	return x;
}

int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	fgets(s,100010,stdin);
	i=0;
	printf("%d\n",suma());
	fclose(stdin); fclose(stdout);
	return 0;
}