Cod sursa(job #2221435)

Utilizator ctlin04UAIC.VlasCatalin ctlin04 Data 14 iulie 2018 12:36:48
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include<fstream>
#include<cstring>
#include<string>
using namespace std;

string exp;
int idx;

int eval();

int level_two_block() {
  
  int r;
  
  if (exp[idx]=='(') {
  	 ++idx;
     r=eval();
     ++idx;
  }
  else {
     r=0;
	 while (idx<exp.length() && exp[idx]>='0' && exp[idx]<='9') r=r*10 + exp[idx++] - '0';	
  }
  
  return r;
	
}

int level_one_block() {
  int r = level_two_block();
  
  while (idx<exp.length() && (exp[idx]=='*' || exp[idx]=='/')) {
     char op = exp[idx++];
     int next = level_two_block();
     
     if (op=='*') r*=next;
     else r/=next;
  }
	
  return r;
}

int eval() {
  int r = level_one_block();	
	
  while (idx<exp.length() && (exp[idx]=='+' || exp[idx]=='-')) {
     char op = exp[idx++];
	 int next = level_one_block();	
  	
  	 if (op=='+') r+=next;
  	 else r-=next;
  }
  
  return r;
  	
}

int main(void) {
	ifstream cin("evaluare.in");
	ofstream cout("evaluare.out");
	
	getline(cin,exp);
	
	idx=0;
	cout<<eval();
	
	return 0;
}