Cod sursa(job #153275)

Utilizator za_wolfpalianos cristian za_wolf Data 10 martie 2008 12:53:15
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<stdio.h>
#include<ctype.h>
#define NMAX 100051
char s[NMAX];
int k,poz;
int eval();
int termen();
int prod();
int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	gets(s);
	k=eval();
	printf("%d\n",k);
	return 0;
}
int eval()
{
	int a=prod();
	while (s[poz]=='+'||s[poz]=='-')
	{
		if (s[poz++]=='+')
			a=a+prod();
		else
			a=a-prod();
	}
	return a;
}
int prod()
{
	int a=termen();
	while (s[poz]=='*'||s[poz]=='/')
	{
		if (s[poz++]=='*')
			a=a*termen();
		else
			a=a/termen();
	}
	return a;
}

int termen()
{
	int a=0;
	if (s[poz]=='(')
	{
		poz++;
		a=eval();
		poz++;
		return a;
	}
	while (isdigit(s[poz]))
		a=a*10+s[poz++]-48;
	return a;
}