Cod sursa(job #3293412)

Utilizator PHOSSESSEDProsie Radu-Teodor PHOSSESSED Data 11 aprilie 2025 17:14:42
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
using namespace std;

string expr;
int p;

int eva();
int termen();
int factor();

int eva() {

  int ans = termen();
  while (expr[p] == '+' || expr[p] == '-') {
    int coef = expr[p++] == '+' ? 1 : -1;
    ans += coef * termen();
  }

  return ans;
}

int termen() {

  int ans = factor();
  while (expr[p] == '*' || expr[p] == '/') {
    if (expr[p++] == '*') {
      ans *= factor();
    } else
      ans /= factor();
  }

  return ans;
}

int factor() {
  if (expr[p] == '(') {
    p++;
    const int rez = eva();
    p++;
    return rez;
  }

  int ans = 0;
  while (expr[p] >= '0' && expr[p] <= '9') {
    ans = ans * 10 + expr[p++] - '0';
  }

  return ans;
}

int main() {

  freopen("evaluare.in", "r", stdin);
  freopen("evaluare.out", "w", stdout);

  cin >> expr;
  p = 0;
  cout << eva();
}