Cod sursa(job #795071)

Utilizator radustn92Radu Stancu radustn92 Data 7 octombrie 2012 15:52:45
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#define LMAX 100005
char A[LMAX];
int poz=1;
int eval1();
int eval2();
int eval3();
int eval1()
{
	int rez=eval2();
	while (A[poz]=='+' || A[poz]=='-')
	{
		if (A[poz]=='+')
			poz++,rez+=eval2();
		if (A[poz]=='-')
			poz++,rez-=eval2();
	}
	return rez;
}
int eval2()
{
	int rez=eval3();
	while (A[poz]=='*' || A[poz]=='/')
	{
		if (A[poz]=='*')
			poz++,rez*=eval3();
		if (A[poz]=='/')
			poz++,rez/=eval3();
	}
	return rez;
}
int eval3()
{
	int rez=0;
	if (A[poz]=='(')
	{
		poz++;
		rez=eval1();
		poz++;
	}
	else
		while (A[poz]>='0' && A[poz]<='9')
			rez=rez*10+A[poz]-'0',poz++;
	return rez;
}
int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	fgets(A+1,LMAX,stdin);
	printf("%d\n",eval1());
	return 0;
}