Cod sursa(job #1460052)

Utilizator valentin50517Vozian Valentin valentin50517 Data 11 iulie 2015 15:40:00
Problema Evaluarea unei expresii Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

string S;
int poz;

int el(int i);
int eval(int k){
	switch(S[poz]){
		case '+' : return k + eval(el(poz+1));
		case '-' : return k - eval(el(poz+1));
		case '*' : return eval(k*el(poz+1));
		case '/' : return eval(k/el(poz+1));
		case '\0': return k;
		case ')' :{
			poz++;
			return k;		
		}		 
	}
}
int el(int i){
	if(S[i] == '('){
		return eval(el(i+1));
	}else{
		int rs = 0;
		for(; int(S[i]) >= 48 && int(S[i]) <= 57;i++){
			rs*=10;
			rs+=int(S[i]) - 48;
		} 
		poz = i;
		return 	rs;
	}
}



int main(){
	getline(fin,S);
	fout << eval(el(0));
	return 0;
}