Cod sursa(job #559599)

Utilizator blastoiseZ.Z.Daniel blastoise Data 17 martie 2011 22:16:13
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <stdio.h>
#include <string.h>

int length;
char sir[100002],*ind;

inline int ground1();
inline int ground2();
inline int ground3();

inline int ground1()
{
	int sol=ground2();
	while(*ind=='+'||*ind=='-')
		if(*ind=='+')
		{
			ind++;
			sol+=ground2();
		}
		else
		{
			ind++;
			sol-=ground2();
		}
	return sol;
}

inline int ground2()
{
	int sol=ground3();
	while(*ind=='*'||*ind=='/')
		if(*ind=='*')
		{
			ind++;
			sol*=ground3();
		}
		else
		{
			ind++;
			sol/=ground3();
		}
	return sol;
}

inline int ground3()
{
	int sol=0;

	if(*ind=='(')
	{
		ind++;
		sol=ground1();
		ind++;
	}
	else
	while('0'<=*ind&&*ind<='9')
	{
		sol*=10;
		sol+=*ind-'0';
		ind++;
	}
	return sol;
}

int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);

	fgets(sir,100003,stdin);

	length=strlen(sir)-1;
	if(sir[length]=='\n') sir[length--]='\0';

	ind=sir;
	printf("%d\n",ground1());

	return 0;
}