Cod sursa(job #145236)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 28 februarie 2008 17:05:37
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <stdio.h>

char s[100111];
int poz;

int eval();
int term();

int fact()
{
	int aux=0;
	if(s[poz]=='(')
	{
		poz++;
		aux=eval();
		poz++;
		return aux;
	}
	while(s[poz]>='0'&&s[poz]<='9')
		aux=aux*10+s[poz++]-'0';
	return aux;
}

int term()
{
	int aux=fact();
	while(s[poz]=='*'||s[poz]=='/')
		if(s[poz++]=='*')
			aux*=fact();
		else
			aux/=fact();
	return aux;
}

int eval()
{
	int aux=term();
	while(s[poz]=='+'||s[poz]=='-')
		if(s[poz++]=='+')
			aux+=term();
		else
			aux-=term();
	return aux;
}

int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	scanf("%s",s);
	printf("%d\n",eval());
	return 0;
}