diff options
| author | sumuel <samuel@yakubos.org> | 2026-06-07 02:07:59 +0100 |
|---|---|---|
| committer | sumuel <samuel@yakubos.org> | 2026-06-07 02:07:59 +0100 |
| commit | 3dbe54853c4733bbe5ff58a6403d1759e921bdc3 (patch) | |
| tree | af5204b3feaae0f659f07c2816677879beb3c157 /main.c | |
| parent | aad2b809ad64ee653793e16ca3e7ba0a84d3fd2a (diff) | |
Change main.c to stats.c
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 81 |
1 files changed, 0 insertions, 81 deletions
@@ -1,81 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> - -/* Enums make words into numbers, ergo no magic numbers */ -enum MODE { - MODE_MAX, - MODE_MIN, - MODE_DIFF -}; - -void help(){ - printf("Usage: stats <numbers>\n"); - exit(1); -} - -/* ADDING UP ALL THE VALUES */ -int sigma(int argc, char * argv[]) { - char *endptr; - int sum = 0; - - for (int i = 1; i < argc; i++) { - - sum += strtol(argv[i], &endptr, 10); /* convert the value to an integer and add it on */ - if (endptr == argv[i] || *endptr != '\0') { - help(); - } - - } - return sum; -} - -/* FINDING MEAN */ -float average(int n, int sum) { - float mean = (float) sum / n; - return mean; -} - -/* FINDING THE MIN/MAX/DIFFERENCE */ -int range(int argc, char * argv[], enum MODE mode) { - int low = strtol(argv[1], NULL, 10); - int high = low; - - for (int i = 1; i < argc; i++) { - int val = strtol(argv[i], NULL, 10); - if (val > high) high = val; - if (low > val) low = val; - } - - /* Check once and return what we need */ - switch (mode) { - case MODE_MAX: - return high; - case MODE_MIN: - return low; - case MODE_DIFF: - return high - low; - } - return 1; -} - -int main(int argc, char * argv[]) { - if (argc < 2) { /* Stop empty input */ - help(); - } - - int n = argc - 1; /* this is how many numbers there are */ - int sum = sigma(argc, argv); /* sigma means adding them all together */ - float mean = average(n, sum); /* the sum divided by the however many numbers there are */ - int min = range(argc, argv, MODE_MIN); /* Using enums here to use words instead of numbers */ - int max = range(argc, argv, MODE_MAX); - int diff = range(argc, argv, MODE_DIFF); - - - /* align text left for 6 and 12 right */ - printf("%-6s %12d\n", "num:", n); - printf("%-6s %12d\n", "sum:", sum); - printf("%-6s %12.3f\n", "mean:", mean); - printf("%-6s %12d\n", "min:", min); - printf("%-6s %12d\n", "max:", max); - printf("%-6s %12d\n", "range:", diff); -} |