Cod sursa(job #1589777)

Utilizator andrei_diaconuAndrei Diaconu andrei_diaconu Data 4 februarie 2016 13:37:53
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>

#define NMax 100010

using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");

int pos;
char expr[NMax];

int ord2(), ord3();

int ord1()
{
	int res = ord2();

	while (expr[pos] == '+' || expr[pos] == '-') {
		if (expr[pos] == '+') {
			++pos;
			res = res + ord2();
		}
		else {
			++pos;
			res = res - ord2();
		}
	}

	return res;
}

int ord2()
{
	int res = ord3();

	while (expr[pos] == '*' || expr[pos] == '/') {
		if (expr[pos] == '*') {
			++pos;
			res = res * ord3();
		}
		else {
			++pos;
			res = res / ord3();
		}
	}

	return res;
}

int ord3()
{
	int res = 0;

	if (expr[pos] == '(') {
		++pos;
		res = ord1();
		++pos;
	}
	else {
		while (expr[pos] >= '0' && expr[pos] <= '9') {
			res = res * 10 + (expr[pos] - '0');
			pos++;
		}
	}

	return res;
}

int main()
{
	f.get(expr, NMax);

	g << ord1();
}