Cod sursa(job #2790973)

Utilizator Luca_Miscocilucainfoarena Luca_Miscoci Data 29 octombrie 2021 21:16:38
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#define SMAX 100000

using namespace std;
int i;
char s[SMAX + 1];
int op2();

int formare_numar (){
  int nr;
  if (s[i] == '(')  {

    i++; //sar peste prima paranteza (
    nr = op2();
    i ++; // sar peste a doua paranteza )
  }

  else {
    nr = 0;
    while (isdigit (s[i])){
      nr = nr * 10 + s[i] - '0';
      i++;
    }
  }
  return nr;
}

int op1 (){ // prioritate 1
  int rez;
  rez = formare_numar();

  while (s[i] == '*' || s[i] == '/'){
    if (s[i] == '*'){
      i++;
      rez *= formare_numar();

    }
    else if (s[i] == '/'){
      i++;
      rez /= formare_numar();

    }
  }
  return rez;
}

int op2 () {// prioritate 2
  int rez;
  rez = op1();

  while (s[i] == '+' || s[i] == '-'){
    if (s[i] == '+'){
      i ++;
      rez += op1();
    }
    else if (s[i] == '-'){
      i++;
      rez -= op1();
    }
  }
  return rez;
}
int main(){

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

  fin >> s;
  fout << op2();
  return 0;
}