Cod sursa(job #1875284)

Utilizator Vasile_RotaruVasea Rotaru Vasile_Rotaru Data 10 februarie 2017 22:15:11
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<fstream>
#include<cstdio>

using namespace std;

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

string s;
int i = 0;

long termen();
long factor();

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

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

long factor(){
	long result = 0;
	if( s[i] == '('){
		++i;
		result = evaluare();
		++i;
	}
	while( s[i] >= '0' and s[i] <= '9'){
	result = result*10 + s[i] - '0';
	++i;	
	}
	return result;
}
int main(){
	getline(fin,s);
	fout<<evaluare();
	return 0;
}