[ create a new paste ] login | about

Link: http://codepad.org/LQ8UIyYT    [ raw code | output | fork ]

C, pasted on Jul 5:
#include <stdio.h>
#define N 1024
#if 0
#include <math.h>
double root(double r) {
  return sqrt(r);
}
#endif
double root(double r) {
  int i;
  double e = 1.0;
  for (i = 0; i < 100; i++)
    e = 0.5 * (e + r / e);
  return e;
}

int main()
{
  double a = 0.0, b = 0.0;
  int d = 0, c[2];
  char buff[N], *p;
  
  p = buff;
  for (;;) {
    scanf("%1s", &c);
    c[0] = (c[0] & 0xff);
    if (c[0] == 'q')
      break;
    if (c[0] == '+' || c[0] == '-' || c[0] == '*' || c[0] == '/' || c[0] == 'r') {
      a = b;
      *p = '\0';
      sscanf(buff, "%lf", &b);
      p = buff;
      d = c[0];
    } else if (c[0] == '=') {
      a = b;
      *p = '\0';
      sscanf(buff, "%lf", &b);
      p = buff;
      switch (d) {
      case '+': b += a; break;
      case '-': b -= a; break;
      case '*': b *= a; break;
      case '/': b /= a; break;
      case 'r': b = root(b); break;
      }
      printf("%.15g\n", b);
    } else if (c[0] >= '0' && c[0] <= '9') {
      *(p++) = c[0];
    }
  }
  return 0;
}
/* end */


Output:
1
Timeout


Create a new paste based on this one


Comments: