Cod sursa(job #1651959)

Utilizator oanaroscaOana Rosca oanarosca Data 14 martie 2016 12:17:59
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>

using namespace std;

string s;
int i, l;
int term (), fact ();

int expr () {
  int sol = term();
  while (s[i] == '+' or s[i] == '-') {
    i++;
    if (s[i-1] == '+')
      sol += term();
    else
      sol -= term();
  }
  return sol;
}

int term () {
  int sol = fact();
  while (s[i] == '*' or s[i] == '/') {
    i++;
    if (s[i-1] == '*')
      sol *= fact();
    else
      sol /= fact();
  }
  return sol;
}

int fact () {
  int sol = 0;
  if (s[i] == '(')
    i++, sol = expr(), i++;
  else
    while ('0' <= s[i] and s[i] <= '9')
      sol *= 10, sol += s[i]-'0', i++;
  return sol;
}

int main () {
  ifstream fi("evaluare.in");
  ofstream fo("evaluare.out");
  fi >> s; l = s.length()-1;
  fo << expr();
  return 0;
}