Cod sursa(job #349071)

Utilizator NemultumituMatei Ionita Nemultumitu Data 17 septembrie 2009 22:28:44
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <stdio.h>

freopen ("evaluare.in","r",stdin);
freopen ("evaluare.out","w",stdout);

char s[1000];
char *p;
int eval();
int termen();
int factor();

int main()
{
	fgets (s,1000,stdin);
	p=s;
	printf ("%d",eval());
	return 0;
}

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';
	}
	return r;
}