Cod sursa(job #320217)

Utilizator ooctavTuchila Octavian ooctav Data 4 iunie 2009 00:21:07
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
// evaluare.cpp : Defines the entry point for the console application.
//

#include <stdio.h>
char e[100001],*p=e;
int acasa=0;
int termen();
int factor();
int evaluator()
{
	int a=termen();
	while(*p=='-' || *p=='+')
		switch(*p)
		{
			case'+':
				p++;
				a=a+termen();
				break;
			case'-':
				p++;
				a=a-termen();
				break;
		}
	return a;
}
int termen()
{
	int a=factor();
	while(*p=='*' || *p=='/')
		switch(*p)
		{
			case'*':
				p++;
				a=a*factor();
				break;
			case'/':
				p++;
				a=a/factor();
				break;
		}
	return a;

}

int factor()
{
	int a=0;
	if(*p=='(')
	{
		p++;
		a=evaluator();
		p++;
	}
	else
		while(*p>='0' && *p<='9')
		{
			a=a*10+*p-'0';
			p++;
		}
	return a;
}


int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	fgets(e,100000,stdin);

	acasa=evaluator();

	printf("%d",acasa);


	return 0;
}