author | Markus Bröker <mbroeker@largo.dyndns.tv> |
Thu, 14 May 2009 17:31:45 +0200 | |
changeset 92 | 0bc2646daa82 |
parent 80 | 5d7057a1b202 |
permissions | -rw-r--r-- |
/** * fak.c * Copyright (C) 2008 Markus Broeker */ #include <stdio.h> #include <stdlib.h> unsigned long long fak (short i) { if (i == 0) return 1; return (i * fak (i - 1)); } long double bigfak (short i) { if (i == 0) return 1; return (i * bigfak (i - 1)); } int main (int argc, char **argv) { short number; printf ("Enter a number: "); if (scanf ("%hd", &number) != 1) { printf ("READ ERROR\n"); return EXIT_FAILURE; } if (number < 0 || number > 170) { printf ("Range Error: %hd ! {0..170}\n", number); return EXIT_FAILURE; } if (number > 20) printf ("The factorial of %2d is %1.5Lg\n", number, bigfak (number)); else printf ("The factorial of %2d is %llu\n", number, fak (number)); return EXIT_SUCCESS; }