Cod sursa(job #2427157)

Utilizator isa_tudor_andreiAndrei Tudor isa_tudor_andrei Data 30 mai 2019 23:32:14
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>
#define NMAX 100000

using namespace std;

char s[NMAX], *p = s;

int eval();

int factor(  ) {
  int nr = 0;
  if( *p == '(' ) {
    p ++;
    nr = eval();
    p ++;
    return nr;
  }
  else {
    while( *p >= '0' && *p <= '9' ) {
      nr = nr * 10 + (*p - '0');
      p ++;
    }
    return nr;
  }
}

int termen(  ) {
  int r = factor();
  while( *p == '*' || *p == '/' ) {
    if( *p == '*' )
      p ++, r = r * factor();
    else
      p ++, r = r / factor();
  }
  return r;
}

int eval( ) {
  int r = termen();
  while( *p == '+' || *p == '-' ) {
    if( *p == '+' )
      p ++, r += termen();
    else
      p ++, r -= termen();
  }
  return r;
}

int main() {
    ifstream fin("evaluare.in");
    ofstream fout("evaluare.out");
    fin>>s;
    fout<<eval();
    return 0;
}