diff options
Diffstat (limited to 'src/cmd/coin/coin.c')
| -rw-r--r-- | src/cmd/coin/coin.c | 37 |
1 files changed, 17 insertions, 20 deletions
diff --git a/src/cmd/coin/coin.c b/src/cmd/coin/coin.c index c18d66c..4471959 100644 --- a/src/cmd/coin/coin.c +++ b/src/cmd/coin/coin.c @@ -4,61 +4,58 @@ #include <string.h> #include <limits.h> -unsigned long coinFlip (unsigned long times); +int coinFlip (int times); int main (int argc, char *argv[]) { - int nflag = 0, i, mflag = 0; - unsigned long times = 1, tails, heads; + int nflag = 0, times = 1, i, tails, heads; + float ph, pt; argc--; for (i = 1; i <= argc; i++) { - if (strcmp(argv[i], "-n") == 0) + if (strcmp(argv[i], "-n") == 0) { nflag++; - else if (strcmp(argv[i], "-m") == 0) { - mflag++; + } else if (strcmp(argv[i], "-m") == 0) { + times = INT_MAX; break; - } else if (nflag == 1) + } else if (nflag == 1) { times = atoi(argv[i]); if (times == 0) { printf("Non Integer Value Inputted\n"); return -1; } + break; + } } - if (mflag == 1) - times = ULONG_MAX; - if (times == 1) printf("%s\n", coinFlip(times) ? "Heads" : "Tails"); else { tails = coinFlip(times); heads = times - tails; - float ph = (float)heads/times, pt = (float)tails/times; + ph = (float)heads/times; + pt = (float)tails/times; - printf("Heads: %lu\nTails: %ld\nProb Heads: %f\nProb Tails: %f\n", heads, tails, ph, pt); + printf("Heads: %d\nTails: %d\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 */ -unsigned long -coinFlip (unsigned long times) +int +coinFlip (int times) { - unsigned long tails, i; - int c; + int tails, i, c; time_t t; srand((unsigned) time(&t)); - tails = 0; - - for (i = 0; i < times; i++) { + for (i = tails = 0; i < times; i++) { c = rand() % 2; if (c == 1) tails++; } return tails; -}
\ No newline at end of file +} |
