Cod sursa(job #728760)

Utilizator StrajanStrajan Sebastian Ioan Strajan Data 28 martie 2012 22:34:26
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
using namespace std;

char sir[100001];

int i=0;

long termen();
long factor();
long evaluare();

long termen(){
	long x = factor();
	while ((sir[i] == '*') or (sir[i] == '/'))
		switch (sir[i]){
			case '*':
				i++;
				x /= factor();
				break;
			case '/':
				i++;
				x /= factor();
				break;
		}
	return x;
}

long factor(){
	long x = 0;
	if (sir[i] == '('){
		i++;
		x = evaluare();
		i++;
	}
	else
		while (sir[i] >= '0' && sir[i] <= '9'){
			x = x*10 + sir[i] - '0';
			i++;
		}
	return x;
}

long evaluare(){
	long x = termen();
	while ((sir[i] == '+') or (sir[i] == '-'))
		switch (sir[i]){
			case '+':
				i++; 
				x += termen();
				break;
			case '-':
				i++;
				x -= termen();
				break;
		}
	return x;
}

int main(){
	ifstream f("evaluare.in");
	ofstream g("evaluare.out");
	
	f.getline(sir, 100001);
	f.close();
	
	g<<evaluare();
	g.close();
	return 0;
}