Cod sursa(job #408286)

Utilizator O_NealS. Alex O_Neal Data 2 martie 2010 22:42:43
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<stdio.h>

char expresie[100010], *p;

long eval();
long termen();
long factor();

long eval()
{
	long rez = termen();
	while( *p =='+' || *p =='-')
		if(*p=='+')
		{
			++p;
			rez+=termen();
		}
		else 
		{
			++p;
			rez-=termen();
		}
	return rez;
}


long termen()
{
	long rez=factor();
	while( *p=='*' || *p=='/')
		if(*p=='*')
		{
			++p;
			rez*=factor();
		}
		else
		{
			++p;
			rez/=factor();
		}
	return rez;
}
			

long factor()
{
	long rez=0;
	if(*p=='(')
	{
		++p;
		rez=eval();
		++p;
	}
	else while(*p >='0' && *p<= '9')
	{
		rez=rez*10+*p-'0';
		++p;
	}
	return rez;
}
	

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