Cod sursa(job #524879)

Utilizator ZethpixZethpix Zethpix Data 23 ianuarie 2011 15:03:10
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <stdio.h>

char Sir[100010],*ind;

int level1();
int level2();
int level3();

int level1()
{
	int sol=level2();

	while(*ind=='+'||*ind=='-')
		if(*ind=='+')
		{
			ind++;
			sol+=level2();
		}
		else
		{
			ind++;
			sol-=level2();
		}

	return sol;
}

int level2()
{
	int sol=level3();

	while(*ind=='*'||*ind=='/')
		if(*ind=='*')
		{
			ind++;
			sol*=level3();
		}
		else
		{
			ind++;
			sol/=level3();
		}

	return sol;
}

int level3()
{
	int sol=0;

	if(*ind=='(')
	{
		ind++;
		sol=level1();
		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,100010,stdin);
	ind=Sir;

	printf("%d\n",level1());

	return 0;
}