Cod sursa(job #2790964)

Utilizator Alex_HossuHossu Alexandru Alex_Hossu Data 29 octombrie 2021 20:52:32
Problema Evaluarea unei expresii Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.1 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] == '*') {
      ind++;
      rez *= factor();
    } else {
      rez /= factor();
    }
  }

  return rez;
}


int adunare() {
  int rez;

  rez = inmultire();
  while ((s[ind] == '+') || (s[ind] == '-')) {
    ind++;
    if (s[ind] == '+')
      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;
}