Cod sursa(job #2790967)

Utilizator Alex_HossuHossu Alexandru Alex_Hossu Data 29 octombrie 2021 20:57:16
Problema Evaluarea unei expresii Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <stdio.h>
#define MAX 100001

char s[MAX];
int ind;

int adunare();

int factor() {
  int nr;

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

  return nr;
}

int inmultire() {
  int rez;

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

  return rez;
}


int adunare() {
  int rez;

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

  return rez;
}


int main() {
  FILE *fin, *fout;

  fin = fopen("evaluare.in", "r");
  fgets(s, MAX, fin);
  fclose(fin);

  ind = 0;

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

    return 0;
}