Cod sursa(job #2628679)

Utilizator k2e0e0w3qDumitrescu Gheorghe k2e0e0w3q Data 16 iunie 2020 22:56:29
Problema Evaluarea unei expresii Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <stdio.h>
#include <ctype.h>

char c;
int E ();
int F () {
  int ans = 0;
  if (c == '(') {
    c=getchar_unlocked();
    ans=E();
    c=getchar_unlocked();
  }
  else
    while (isdigit(c)) {
      ans = (ans<<3) + (ans<<1) + c - '0';
      c=getchar_unlocked();
    }
  return ans;
}

int T () {
  int ans = F();
  while (c == '*' || c == '/')
    if (c == '*') {
      c=getchar_unlocked();
      ans *= F();
    }
    else {
      c=getchar_unlocked();
      ans /= F();
    }
  return ans;
}

int E () {
  int ans = T();
  while (c == '+' || c == '-')
    if (c== '+') {
      c=getchar_unlocked();
      ans += T();
    }
    else {
      c=getchar_unlocked();
      ans -= T();
    }
  return ans;
}

int main (void) {
  freopen ("evaluare.in", "r", stdin);
  freopen ("evaluare.out", "w", stdout);

  c=getchar_unlocked();
  printf("%d", E());
  return 0;
}