diff options
Diffstat (limited to 'src/cmd/coin/coin.c')
| -rw-r--r-- | src/cmd/coin/coin.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/cmd/coin/coin.c b/src/cmd/coin/coin.c index 5c58b3c..c18d66c 100644 --- a/src/cmd/coin/coin.c +++ b/src/cmd/coin/coin.c @@ -2,25 +2,34 @@ #include <stdlib.h> #include <time.h> #include <string.h> +#include <limits.h> -int coinFlip (int times); +unsigned long coinFlip (unsigned long times); int main (int argc, char *argv[]) { - int nflag = 0, i, times = 1, tails, heads; + int nflag = 0, i, mflag = 0; + unsigned long times = 1, tails, heads; argc--; for (i = 1; i <= argc; i++) { if (strcmp(argv[i], "-n") == 0) nflag++; - else if (nflag == 1) + else if (strcmp(argv[i], "-m") == 0) { + mflag++; + break; + } else if (nflag == 1) times = atoi(argv[i]); if (times == 0) { printf("Non Integer Value Inputted\n"); return -1; } } + + if (mflag == 1) + times = ULONG_MAX; + if (times == 1) printf("%s\n", coinFlip(times) ? "Heads" : "Tails"); else { @@ -28,17 +37,18 @@ main (int argc, char *argv[]) heads = times - tails; float ph = (float)heads/times, pt = (float)tails/times; - printf("Heads: %d\nTails: %d\nProb Heads: %f\nProb Tails: %f\n", heads, tails, ph, pt); + printf("Heads: %lu\nTails: %ld\nProb Heads: %f\nProb Tails: %f\n", heads, tails, ph, pt); } return 0; } /* coinFlip: Flips a coin n numbers of times and returns the number of tails */ -int -coinFlip (int times) +unsigned long +coinFlip (unsigned long times) { - int tails, i, c; + unsigned long tails, i; + int c; time_t t; srand((unsigned) time(&t)); |
