Cod sursa(job #1541902)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 4 decembrie 2015 17:55:38
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>
#include <cctype>

char next;

int E();

inline char consume() {
  char result = next;
  next = getchar();
  return result;
}

int F() {
  int q;
  if (next == '(') {
      consume();
      q = E();
      consume();
  } else {
    q = 0;
    do {
      q = (10 * q) + (consume() - '0');
    } while (isdigit(next));
  }
  return q;
}

int T() {
  int q = F();
  while (next == '*' || next == '/') {
    if (consume() == '*') {
      q *= F();
    } else {
      q /= F();
    }
  }
  return q;
}

int E() {
  int q = T();
  while (next == '+' || next == '-') {
    if (consume() == '+') {
      q += T();
    } else {
      q -= T();
    }
  }
  return q;
}

int main(void) {
  freopen("evaluare.in", "r", stdin);
  freopen("evaluare.out", "w", stdout);
  consume();
  printf("%d\n", E());
  fclose(stdin);
  fclose(stdout);
}