Cod sursa(job #2427155)

Utilizator isa_tudor_andreiAndrei Tudor isa_tudor_andrei Data 30 mai 2019 23:31:25
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 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","r",stdin);
    ofstream fout("evaluare.out","w",stdout);
    int i;
    fin>>s;
    fout<<eval();
    return 0;
}