Cod sursa(job #1200565)

Utilizator sorin2kSorin Nutu sorin2k Data 22 iunie 2014 20:51:09
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream>
using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

char sir[100000], *p;

int factor();
int termen();

int eval() {
	long ans = termen();
	while(*p == '+' || *p == '-') {
		if(*p == '+') {
			p++;
			ans += termen();
		} else {
			p++;
			ans -= termen();
		}
	}
	return ans;
}

int termen() {
	long f = factor();
	while(*p == '*' || *p == '/') {
		if(*p == '*') {
			p++;
			f *= factor();
		} else {
			p++;
			f /= factor();
		}
	}
	return f;
}

int factor() {
	long ans = 0;
	if(*p == '(') {
		p++; // trecem peste '('
		ans = eval();
		p++; // trecem peste ')'
	} else {
		while(*p >= '0' && *p <= '9') {
			ans = ans * 10 + *p - '0';
			p++;
		}
	}
	return ans;
}

int main() {
	fin >> sir;
	p = sir;
	fout << eval();
	return 0;
}