[ create a new paste ] login | about

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

C, pasted on Jun 7:
#include <stdio.h>

typedef union {
  double doubleValue;
  int intValue;
} return_value;

#define N 128
static return_value readConsole(char *msg,int isDouble) {
  static char input[N];
  return_value result;
  printf("%s", msg);
  fgets(input, N, stdin);
  sscanf(input, (isDouble) ? "%lf" : "%d",
                (isDouble) ? &result.doubleValue : &result.intValue);
  return result;
}

static double power(double a, int b) {
  if(b == 0)
    return 1.0;
  if(b > 0)
    return power(a, b - 1) * a;
  return power(a, b + 1) / a;
}

int main(void) {
  return_value ret;
  double a;
  int b;
  do{
    a = readConsole("a=", 1).doubleValue;
    b = readConsole("b=", 0).intValue;
    printf("a^b=%16.15f\n", power(a, b));
  } while (a < 0.0);
  return 0;
}
/* end */


Output:
1
a=b=a^b=4.796177527168769


Create a new paste based on this one


Comments: