Cod sursa(job #892568)

Utilizator alexandru266Glont Alexandru alexandru266 Data 26 februarie 2013 10:36:04
Problema Evaluarea unei expresii Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<stdio.h>
char e[100001];
int i;
using namespace std;
long factor(void);
long termen(void);
long expresie(void);
int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	fgets(e,10001,stdin);
	printf("%ld\n",expresie());
}
long factor()
{
	long f=0;
	if(e[i]>='0'&&e[i]<='9')
	{
		while(e[i]>='0'&&e[i]<='9')
		f=f*10+e[i++]-'0';
	}
	else
		if(e[i]=='(')
		{
			i++;
			f=expresie();
			i++;
		}
return f;
}
long termen(void)
{
	long t=factor();
	while(e[i]=='*'||e[i]=='/')
	{
		if(e[i]=='*')
		{
			i++;
			t*=factor();
		}
		else
		{
			i++;
			t/=factor();
		}
	}
	return t;
}
long expresie(void)
{
	long r=termen();
	while(e[i]=='+'||e[i]=='-')
	{
		if(e[i]=='+')
		{
			i++;
			r+=termen();
		}
		else
		{
			i++;
			r-=termen();
		}
	}
	return r;
}