Cod sursa(job #1946656)

Utilizator SenibelanMales Sebastian Senibelan Data 30 martie 2017 12:20:16
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>

using namespace std;

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

const int NMAX = 100005;
char *p = new char[100005];
int EvaluateExpresion();

int Number(){
  int number = 0;
  if(*p == '('){
    p++;
    number = EvaluateExpresion();
    p++;
  }
  else{
    while(*p >= '0' && *p <= '9'){
      number = number * 10 + (*p - '0');
      p++;
    }
  }
  return number;
}


int Multiplication(){
  int number = Number();
  while(*p == '*' || *p == '/'){
    if(*p == '*'){
      p++;
      number *= Number();
    }
    else{
      p++;
      number /= Number();
    }
  }
  return number;
}

int EvaluateExpresion(){
  int result = Multiplication();
  while(*p == '+' || *p == '-'){
    if(*p == '+'){
      p++;
      result += Multiplication();
    }
    else{
      p++;
      result -= Multiplication();
    }
  }
  return result;
}

int main(){
  in.get(p, NMAX);
  out << EvaluateExpresion();
  return 0;
}