Mai intai trebuie sa te autentifici.

Cod sursa(job #1038897)

Utilizator roby2001Sirius roby2001 Data 22 noiembrie 2013 08:51:09
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 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();
			break;
		}
		if(*p == '/' )
		{
			++p;
			ret /= sub();
			break;
		}
	}
	return ret;
}

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


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