Cod sursa(job #997977)

Utilizator AnonymouslegionAnonymous Anonymouslegion Data 15 septembrie 2013 13:05:39
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <string>

using namespace std;

int p;
string ex;

int eval();
int factor();
int termen();

int termen(){
  int t = factor();
  while(ex[p] == '/' || ex[p] == '*'){
    ++p;
    if(ex[p - 1] == '/')
      t /= factor();
    else
      t *= factor();
  }
  return t;
}

int eval(){
  int t = termen();
  while(ex[p] == '-' || ex[p] == '+'){
    ++p;
    if(ex[p - 1] == '-')
      t -= termen();
    else
      t += termen();
  }
  return t;
}

int factor(){
  int t = 0;
  if(ex[p] == '('){
    ++p;
    t = eval();
    ++p;
    return t;
  }
  while(ex[p] >= '0' && ex[p] <= '9'){
    t = t * 10 + ex[p] - '0';
    ++p;
  }
  return t;
}

int main(){
  ifstream in("evaluare.in");
  ofstream out("evaluare.out");

  in >> ex;

  ex.push_back('$');

  int ans = eval();

  out << ans;

  return 0;
}