Cod sursa(job #1920515)

Utilizator SirbuSirbu Ioan Sirbu Data 10 martie 2017 03:10:11
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <fstream>
#include <string>

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

string s;
string :: iterator it;

int nr();
int adun();
int inm();

int nr(){

  int numar;
  if (*it == '('){
      it++; // sare paranteza
      numar = adun();
      it++; // sare perechea )
  }
  else {
    numar = 0;
    while (*it >= '0' && *it <='9'){
      numar = numar * 10 + (*it-'0');
      it++;
    }
  }
  return numar;
}

int adun(){

  int numar = inm();
  while ( *it == '+' || *it == '-' ){
    if (*it == '+'){
      it++;
      numar+=inm();
    }
    else {
      it++;
      numar-=inm();
    }
  }
  return numar;
}

int inm(){

  int numar = nr();
  while ( *it == '*' || *it == '/' ){
    if (*it == '*'){
      it++;
      numar = numar * nr();
    }
    else {
      it++;
      numar = numar / nr();
    }
  }
  return numar;
}

int main (){

  fin >> s;
  it = s.begin();
  fout << adun();

}