Cod sursa(job #775305)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 7 august 2012 19:23:05
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

char V[100100];
using namespace std;

int N, i;

int expresie();
int termen();
int factor();


int expresie() { //calculeaza si returneaza valoarea unei expresii formata din CEL PUTIN un termen
	int r = termen();
	
	while (V[i] == '+' || V[i] == '-') {
		i++;
		if (V[i-1] == '+')
			r += termen();
		else
			r -= termen();
	}
	return r;
}

int termen() {//evalueaza un termen format din cel putin un factor
	int r = factor();
	
	while (V[i] == '*' || V[i] == '/') {
		i++;
		if (V[i-1] == '/')
			r /= factor();
		else
			r *= factor();
	}
	return r;

}

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

int main() {
	ifstream f("evaluare.in");
	ofstream g("evaluare.out");
	f>>V+1;
	N = strlen(V+1);
	
	i = 1;
	
	g<<expresie();
	
	return 0;
}