summaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c81
1 files changed, 0 insertions, 81 deletions
diff --git a/main.c b/main.c
deleted file mode 100644
index fa69715..0000000
--- a/main.c
+++ /dev/null
@@ -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);
-}