Cod sursa(job #2790372)

Utilizator YusyBossFares Yusuf YusyBoss Data 28 octombrie 2021 20:54:51
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>

using namespace std;

FILE *fin;
char ch;

int adunare();
int inmultire();
int getnr();

int getnr() {
  if (ch == '(') {
    ch = fgetc( fin );
    int val = adunare();
    ch = fgetc( fin );
    return val;
  }

  int nr = 0;
  while (ch >= '0' && ch <= '9') {
    nr = nr * 10 + ch - '0';
    ch = fgetc( fin );
  }
  return nr;
}

int adunare() {
  int val;

  val = inmultire();
  while (ch == '+' || ch == '-') {
    if (ch == '+') {
      ch = fgetc( fin );
      val += inmultire();
    }
    else {
      ch = fgetc( fin );
      val -= inmultire();
    }
  }

  return val;
}

int inmultire() {
  int val;

  val = getnr();
  while (ch == '*' || ch == '/') {
    if (ch == '*') {
      ch = fgetc( fin );
      val *= getnr();
    }
    else {
      ch = fgetc( fin );
      val /= getnr();
    }
  }

  return val;
}

int main() {
  FILE *fout;

  fin = fopen("evaluare.in", "r");
  fout = fopen("evaluare.out", "w");
  ch = fgetc( fin );
  fprintf(fout, "%d", adunare());
  return 0;
}