Cod sursa(job #540280)

Utilizator devill_08Buli.vlad devill_08 Data 23 februarie 2011 20:54:46
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>

char c[100001],*p;

long termen ();
long factor ();

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

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

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

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