Cod sursa(job #158360)

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

long eval2()
	{
	long a=nr();
	while (s[0]=='*'||s[0]=='/')
		{
		if (s[0]=='*')
			{
			strcpy(s,s+1);
			a*=nr();
			}
		else	{
			strcpy(s,s+1);
			a/=nr();
			}
		}
	return a;
	}

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

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