Cod sursa(job #2205660)

Utilizator PetyAlexandru Peticaru Pety Data 19 mai 2018 20:02:30
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>

using namespace std;

int poz;
string s;

int expresie();

int numar () {
  int nr = 0;
  while (isdigit(s[poz])) {
    nr = nr * 10 + s[poz] - '0';
    poz++;
  }
  return nr;
}

int factor(){
  int nr;
  if (s[poz] == '(') {
    poz++;
    nr = expresie();
    poz++;
  }
  else
    nr = numar();
  return nr;
}

int termen () {
  int nr = factor();
  while (s[poz] == '*' || s[poz] == '/') {
    poz++;
    if (s[poz - 1] == '*')
      nr = nr * factor();
    if (s[poz - 1] == '/')
      nr = nr / factor();
  }
  return nr;
}

int expresie (){
  int nr = termen();
  while (s[poz] == '+' || s[poz] == '-') {
    poz++;
    if (s[poz - 1] == '+')
      nr = nr + termen();
    else
      nr = nr - termen();
  }
  return nr;
}

int main()
{
  cin >> s;
  cout << expresie();
  return 0;
}