Cod sursa(job #1038899)

Utilizator roby2001Sirius roby2001 Data 22 noiembrie 2013 08:56:37
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
/*
	Keep It Simple!
*/

#include<stdio.h>
char s[100002],*p=s;

long solve();
long multi();

long sub()
{
	long ret = 0;
	if( *p == '(')
	{
		++p;
		ret=solve();
		++p;
	}
	else {
		while( *p >='0' && *p<='9')
		{
			ret=ret*10+(*p-'0');
			++p;
		}
	}
	return ret;
}
long multi()
{
	long ret = sub();
	while ( *p == '*' || *p == '/' )
	{
		if( *p == '*' )
		{
			++p;
			ret *= sub();
		}
		if(*p == '/' )
		{
			++p;
			ret /= sub();
		}
	}
	return ret;
}

long solve()
{
	long ret = multi();
	while ( *p == '+' || *p == '-' )
	{
		if( *p == '+' )
		{
			++p;
			ret += multi();
		}
		if(*p == '-' )
		{
			++p;
			ret -= multi();
		}
	}
	return ret;
}


int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	scanf("%s",s);
	printf("%ld\n",solve());
}