Cod sursa(job #1460208)

Utilizator valentin50517Vozian Valentin valentin50517 Data 11 iulie 2015 20:31:12
Problema Evaluarea unei expresii Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 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 '\0': return k;
		case ')' :{
			poz++;
			return k;		
		}		 
	}
}

int cifr(int i){
		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 el(int i){
	int m;
	if(S[i] == '('){
		m =  eval(el(i+1));
	}else  m = cifr(i);
	
		switch(S[poz]){
			case '*': return m*el(poz+1);
			case '/': return m/el(poz+1);
			default: return m;
		}
}

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