Cod sursa(job #158370)

Utilizator alex3el_n2oAlex Vladescu alex3el_n2o Data 13 martie 2008 16:51:36
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>
char x[100010],*s=x;
long eval2();
long nr();
long eval()
	{
	long a=eval2();
	while (*s=='+'||*s=='-')
		{
		if (*s=='+')
			{
			s++;
			a+=eval2();
			}
		else    {
			s++;
			a-=eval2();
			}
		}
	return a;
	}

long eval2()
	{
	long a=nr();
	while (*s=='*'||*s=='/')
		{
		if (*s=='*')
			{
			s++;
			a*=nr();
			}
		else	{
			s++;
			a/=nr();
			}
		}
	return a;
	}

long nr()
	{
	long a=0;
	if (*s=='(')
		{
		s++;
		a=eval();
		s++;
		}
	else
		while (*s>='0'&&*s<='9')
			{
			a=a*10+*s-'0';
			s++;
			}
	return a;
	}

int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
gets(x);
printf("%ld\n",eval());
return 0;
}