Cod sursa(job #1220013)

Utilizator ptquake10ptquake10 ptquake10 Data 16 august 2014 12:38:58
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <stack>
#include <algorithm>
#include <fstream>

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

int i;
string s;

int exp();

int fact() {
	int r = 0;
	if (i < s.length() && s[i] == '(') {
		i++;
		r = exp();
		i++;
	} else {
		while (i < s.length() && s[i] >= '0' && s[i] <= '9') {
			r = r * 10 + s[i] - '0';
			i++;
		}
	}
	return r;
}

int term() {
	int r = fact();
	while (i < s.length() && (s[i] == '*' || s[i] == '/')) {
		if (s[i] == '*') {
			i++;
			r *= fact();
		} else {
			i++;
			r /= fact();
		}
	}
	return r;
}

int exp() {
	int r = term();
	while (i < s.length() && (s[i] == '+' || s[i] == '-')) {
		if (s[i] == '+') {
			i++;
			r += term();
		} else {
			i++;
			r -= term();
		}
	}
	return r;
}

int main() {
	
	f >> s;
	g << exp();
	
	return 0;
}