Cod sursa(job #409406)

Utilizator ooctavTuchila Octavian ooctav Data 3 martie 2010 17:17:17
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <cstdio>
#define LMAX 100001
int adun();
int inmult();
int termen();
int nr = 0;
char c[LMAX];

int adun()
{
	int x = inmult();
	while(c[nr] == '+' || c[nr] == '-')
	{
		nr++;
		if(c[nr-1] == '+')
			x += inmult();
		else
			x -= inmult();
	}
	return x;
}

int inmult()
{
	int x = termen();
	while(c[nr] == '*' || c[nr] == '/')
	{
		nr++;
		if(c[nr-1] == '*')
			x *= termen();
		else
			x /= termen();
	}
	return x;
}

int termen()
{
	int x=0;
	if(c[nr] == '(')
	{
		nr++;
		x=adun();
		nr++;
	}
	while(c[nr] >= '0' && c[nr] <= '9')
		x = 10 * x + c[nr++] - '0';
	return x;
}

int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	fgets(c,LMAX,stdin);
	printf("%d",adun());
	
	return 0;
}