Cod sursa(job #1478874)

Utilizator RusuAlexeiRusu Alexei RusuAlexei Data 29 august 2015 19:19:24
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>

using namespace std;

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

string line;
int i = 0;

int factor(void);
int summand(void);
int expression(void);

int expression(void){
	int value = 0;
	value += summand();
	while (line[i]=='+' || line[i]=='-'){
		i++;
		if (line[i-1]=='+')value += summand();
		else value -= summand();
	
	} 
	return value;
}

int summand(void){
	int value = 1;
	value *= factor();
	while (line[i]=='*' || line[i]=='/'){
		i++;
		if (line[i-1]=='*')value *= factor();
		else value /= factor();
	
	}
	return value;
}

int factor(void){
	int value = 0;
	if (line[i]=='('){
		i++;
		value = expression();
		i++;
	} 
	else{
		
		while (i<line.length() && line[i]<='9' && line[i]>='0'){
			value = value*10 + line[i]- '0';
			i++;
		}
	}
	return value;
}



int main(void){
	in >> line;
	out << expression();	
	
	return 0;
}