Cod sursa(job #156390)

Utilizator vlad_popaVlad Popa vlad_popa Data 12 martie 2008 15:18:21
Problema Evaluarea unei expresii Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
#include <string.h>

#define MAXN 100001

char s[MAXN];
int p = 0;

int solve1();
int solve2();
int solve3();

int
 main ()
{
	freopen ("evaluare.in", "rt", stdin);
	freopen ("evaluare.out", "wt", stdout);

	gets (s);
	printf ("%d\n", solve1());

	return 0;
}

int solve1()
{
	int sol = solve2();
	if (s[p] == '+')
	{
		++p;
		sol += solve2();
	}
	if (s[p] == '-')
	{
		++p;
		sol -= solve2();
	}

	return sol;
}

int solve2()
{
	int sol = solve3();

	if (s[p] == '*')
	{
		++p;
		sol *= solve2();
	}
	if (s[p] == '/')
	{
		++p;
		sol /= solve2();
	}

	return sol;
}

int solve3()
{
	int sol = 0;

	if (s[p] == '(')
	{
		++p;
		sol += solve1();
		++p;
	}
	else for (; s[p] >= '0' && s[p] <= '9'; sol = sol * 10 + s[p] - '0', ++p);

	return sol;
}