Cod sursa(job #2790456)

Utilizator mihaipriboimihailucapriboi mihaipriboi Data 29 octombrie 2021 00:09:29
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
// Mihai Priboi

#include <bits/stdc++.h>

#define MAXN 100001

char s[MAXN];
int ind;

int adunare();

int factor() {
  int nr;
  nr = 0;

  if( s[ind] == '(' ) {
    ind++;
    nr = adunare();
    ind++;
  }
  else {
    while( s[ind] >= '0' && s[ind] <= '9' )
      nr = nr * 10 + s[ind++] - '0';
  }

  return nr;
}

int inmultire() {
  int prod;

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

  return prod;
}

int adunare() {
  int sum;

  sum = inmultire();
  while( s[ind] == '+' || s[ind] == '-' ) {
    if( s[ind++] == '+' )
      sum += inmultire();
    else
      sum -= inmultire();
  }

  return sum;
}

int main() {
  FILE *fin, *fout;
  int n;
  fin = fopen( "evaluare.in", "r" );
  fgets( s, MAXN, fin );
  fclose( fin );

  fout = fopen( "evaluare.out", "w" );
  ind = 0;
  fprintf( fout, "%d", adunare() );
  fclose( fout );
  return 0;
}