Cod sursa(job #351942)

Utilizator NemultumituMatei Ionita Nemultumitu Data 29 septembrie 2009 20:51:55
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <stdio.h>
#include <string.h>
char s[100000];
char *p;

int termen();
int factor();
int eval();

int main()
{
	freopen ("evaluare.in","r",stdin);
	freopen ("evaluare.out","w",stdout);
	gets (s);
	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++;
	}
	while (*p>='0'&&*p<='9')
	{
		r=r*10+*p-'0';
		p++;
	}
	return r;
}