Cod sursa(job #2790970)

Utilizator vladburacBurac Vlad vladburac Data 29 octombrie 2021 21:12:41
Problema Evaluarea unei expresii Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXS 100000

char s[MAXS];
int i;

int adunare();

int factor() {
  int nr;
  if( s[i] == '(' ) {
    i++;
    nr = adunare();
    i++;
  }
  else {
    nr = 0;
    while( '0' <= s[i] && s[i] <= '9' ) {
      nr = nr * 10 + s[i] - '0';
      i++;
    }
  }
  return nr;
}

int inmultire() {
  int rasp;
  rasp = factor();
  while( s[i] == '*' || s[i] == '/' ) {
    if( s[i] == '*' ) {
      i++;
      rasp = rasp * factor();
    }
    else {
      i++;
      rasp = rasp / factor();
    }
  }
  return rasp;
}

int adunare() {
  int rasp;
  rasp = inmultire();
  while( s[i] == '+' || s[i] == '-' ) {
    if ( s[i] == '+' ) {
      i++;
      rasp += inmultire();
    }
    else {
      i++;
      rasp -= inmultire();
    }
  }
  return rasp;
}

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

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