Cod sursa(job #3367601)

Utilizator Emre12Isleam Emre Emre12 Data 8 octombrie 2026 19:30:23
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <cstdio>
#include <fstream>

int sIndex;
std::string v;

int adn();

int factor() {
  int n = 0;
  if (v[sIndex] == '(') {
    sIndex++;
    n = adn();
    sIndex++;
  } else {
    while (isdigit(v[sIndex]))
      n = n * 10 + (v[sIndex++] - '0');
  }
  return n;
}
int inm() {
  int rez = factor();
  while (v[sIndex] == '*' || v[sIndex] == '/') {
    if (v[sIndex++] == '*')
      rez *= factor();
    else
      rez /= factor();
  }
  return rez;
}

int adn() {
  int rez = 0;
  rez = inm();
  while (v[sIndex] == '+' || v[sIndex] == '-') {
    if (v[sIndex++] == '+')
      rez += inm();
    else
      rez -= inm();
  }
  return rez;
}

int main() {
  FILE *fout;
  std::ifstream fin("evaluare.in");
  fout = fopen("evaluare.out", "w");

  std::getline(fin, v);
  fprintf(fout, "%d", adn());
}