Cod sursa(job #1379148)

Utilizator andrei_diaconuAndrei Diaconu andrei_diaconu Data 6 martie 2015 16:34:53
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#define NMax 100010
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int ind = 1;
char sir[NMax];

int fact();
int term();

int eval()
{
	int res = fact();
	while (sir[ind] == '+' || sir[ind] == '-') {
		if (sir[ind] == '+') {
			ind++;
			res += fact();
		}
		else {
			ind++;
			res -= fact();
		}
	}
	return res;
}

int fact()
{
	int res = term();
	while (sir[ind] == '*' || sir[ind] == '/') {
		if (sir[ind] == '*') {
			ind++;
			res *= term();
		}
		else {
			ind++;
			res /= term();
		}
	}
	return res;
}

int term()
{
	int res = 0;
	if (sir[ind] == '(') {
		ind++;
		res = eval();
		ind++;
	}
	else {
		while (sir[ind] >= '0' && sir[ind] <= '9') {
			res = res * 10 + (sir[ind] - '0');
			ind++;
		}
	}
	return res;
}

int main()
{
	f.getline(sir + 1, 100010);
	g << eval();
}