Cod sursa(job #182060)

Utilizator Spike7d8Cristian Varvara Spike7d8 Data 20 aprilie 2008 11:46:58
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#ifdef WIN32
#define _CRT_SECURE_NO_WARNINGS
#endif

#include <stdio.h>

char e[100352];
int p;

int termen(), factor();

int evaluare()
{
	int r = termen();
	while (e[p] == '+' || e[p] == '-')
	{
		if (e[p] == '+')
		{
			p++;
			r += termen();
		}
		else
		{
			p++;
			r -= termen();
		}
	}
	return r;
}


int termen()
{
	int r = factor();
	while (e[p] == '*' || e[p] == '/')
	{
		if (e[p] == '*')
		{
			p++;
			r *= factor();
		}
		else
		{
			p++;
			r /= factor();
		}
	}
	return r;
}


int factor()
{
	int r = 0;
	if (e[p] == '(')
	{
		p++;
		r = evaluare();
		p++;
	}
	else
	{
		while ('0' <= e[p] && e[p] <= '9')
		{
			r = r * 10 + e[p] - '0';
			p++;
		}
	}
	return r;
}
int main()
{
	freopen("evaluare.in", "rt", stdin);
	freopen("evaluare.out", "wt", stdout);

	scanf("%s", e);
	printf("%d", evaluare());

	return 0;
}