Cod sursa(job #2791585)

Utilizator 2016Teo@Balan 2016 Data 30 octombrie 2021 19:57:26
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>
using namespace std;

#define filei "evaluare.in"
#define fileo "evaluare.out"

ifstream in(filei);
ofstream out(fileo);

#define NMAX 100004

char str[NMAX];
int cnt;
#define MAXN 100001


int adun();

int factor() {
  int x = 0;

  if( str[cnt] == '(' ) {
    cnt++;
    x = adun();
    cnt++;
  }
  else {
    while( str[cnt] >= '0' && str[cnt] <= '9' )
      x = x * 10 + str[cnt++] - '0';
  }

  return x;
}

int inmult() {
  int prod;

  prod = factor();
  while( str[cnt] == '*' || str[cnt] == '/' ) {
    if( str[cnt++] == '*' )
      prod *= factor();
    else
      prod /= factor();
  }

  return prod;
}

int adun() {
  int sum;

  sum = inmult();
  while( str[cnt] == '+' || str[cnt] == '-' ) {
    if( str[cnt++] == '+' )
      sum += inmult();
    else
      sum -= inmult();
  }

  return sum;
}

int main() {
    in.getline(str, NMAX - 1);
    out << adun();
    return 0;
}