Cod sursa(job #2628672)

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

char s[100100], *p=s;
int E ();
int F () {
  int ans = 0;
  if (*p == '(') {
    ++p;
    ans=E();
    ++p;
  }
  else
    while (isdigit(*p)) {
      ans = (ans<<3) + (ans<<1) + *p - '0';
      ++p;
    }
  return ans;
}

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

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

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

  gets(s);
  printf("%d", E());
  return 0;
}