Cod sursa(job #843270)

Utilizator CS-meStanca Marian Ciprian CS-me Data 27 decembrie 2012 17:44:51
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
using namespace std;

int i;
char s[100100];
int expresie();
int termen();
int factor();


int expresie() {
	int r;
	
	r = termen();
	while (s[i] == '+' || s[i] == '-') {
		if (s[i] == '+') {
			i++;
			r+=termen();
		} else {
			i++;
			r-=termen();
		}
	}
	
	return r;
}

int termen() {
	int r;
	r = factor();
	while (s[i] == '*' || s[i] == '/') {
		if (s[i] == '*') {
			i++;
			r*=factor();
		} else {
			i++;
			r/=factor();
		}
	}
	
	return r;
}

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

int main() {
	ifstream fin("evaluare.in");
	ofstream fout("evaluare.out");
	fin>>s+1;
	
	i = 1;
	fout<<expresie()<<"\n";
	
	return 0;
}