Cod sursa(job #1624244)

Utilizator oanaroscaOana Rosca oanarosca Data 2 martie 2016 09:38:25
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>

using namespace std;

int i;
char s [100003];

int expresie();

int termen () {
  int rez=0;

  if (s[i] == '(') {
    i++;
    rez = expresie();
    i++;
  }
  else
    while (s[i] >= '0' and s[i] <= '9') {
      rez = rez*10 + s[i]-'0';
      i++;
    }
  return rez;
}

int factor () {
  int rez = termen();

  while (s[i] == '*' or s[i] == '/')
    if (s[i] == '*') {
      i++; rez *= termen();
    }
    else {
      i++; rez /= termen();
    }
  return rez;
}
int expresie () {
  int rez = factor();

  while (s[i] == '+' or s[i] == '-')
    if(s[i] == '+') {
      i++; rez += factor();
    }
    else {
      i++; rez -= factor();
    }
  return rez;
}

int main() {
  ifstream fi("evaluare.in");
  ofstream fo("evaluare.out");
  fi >> s;
  fo << expresie() << '\n';
  return 0;
}