From 6cdb4014d0ceff10b7703e1c99eab283047aa5df Mon Sep 17 00:00:00 2001 From: Myles Busig Date: Wed, 30 Oct 2024 00:05:20 -0700 Subject: [PATCH] Add answers for problem 2 --- include/p2.h | 8 ++++++++ src/main.c | 12 ++++++++++++ src/p2.c | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 include/p2.h create mode 100644 src/p2.c diff --git a/include/p2.h b/include/p2.h new file mode 100644 index 0000000..e01df8f --- /dev/null +++ b/include/p2.h @@ -0,0 +1,8 @@ +#ifndef P2_H +#define P2_H + +void find_avg_min_max(double* arr, int size, + double* out_avg, double* out_min, double* out_max); + +#endif + diff --git a/src/main.c b/src/main.c index 4c49769..dbc268c 100644 --- a/src/main.c +++ b/src/main.c @@ -1,6 +1,7 @@ #include #include "p1.h" +#include "p2.h" int main(void) { // Problem 1 @@ -8,6 +9,17 @@ int main(void) { printf("Number of alphanumeric characters in \"Hello World!!\": %d\n", num_alphanum); // Problem 2 + double arr[8] = { + 2.5, 4.3, 8.1, -7.4, 2.0, 1.0, 3.0, 4.0 + }; + + double avg = 0; + double min = 0; + double max = 0; + + find_avg_min_max(arr, 8, &avg, &min, &max); + + printf("Average: %.2lf, Min: %.2lf, Max: %.2lf\n", avg, min, max); return 0; } diff --git a/src/p2.c b/src/p2.c new file mode 100644 index 0000000..db581da --- /dev/null +++ b/src/p2.c @@ -0,0 +1,32 @@ +#include "p2.h" + +void find_avg_min_max(double* arr, int size, + double* out_avg, double* out_min, double* out_max) { + // If there are no elements in the array, attempting to access the first + // element to initialize min and max will access memory outside the bounds + // of the array. Instead, we will return early. + if (size <= 0) { + return; + } + + double sum = 0; + double min = arr[0]; + double max = arr[0]; + + for (int i = 0; i < size; ++i) { + sum += arr[i]; + + if (arr[i] < min) { + min = arr[i]; + } + + if (arr[i] > max) { + max = arr[i]; + } + } + + *out_avg = sum / size; + *out_min = min; + *out_max = max; +} +