Cod sursa(job #266759)

Utilizator PavelRazvanPavel Razvan PavelRazvan Data 26 februarie 2009 08:19:58
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<stdio.h>
#define DIM 100001
char s[DIM],*p=s;
int eval ();
int termen ();
int factor ();
int eval ()
{
    int r=termen ();        
	while(*p=='+' || *p=='-')
		if(*p=='+')
		{
			++p;
			r+=termen();
		}
		else
		{
			++p;
			r-=termen();
		}
	return r;
}
int termen ()
{
	int r=factor ();
	while(*p=='*' || *p=='/')
		if(*p=='*')
		{
			++p;
			r*=factor();
		}
		else
		{
			++p;
			r/=factor();
		}
	return r;
}
int factor ()
{
	int 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 (s);
	printf ("%d", eval ());
    return 0;
}