From fcf38e62e8160f2c9901bdfd33760afed28beb8d Mon Sep 17 00:00:00 2001 From: Syndamia Date: Sun, 22 Feb 2026 19:18:46 +0200 Subject: feat(Week01): Add solutions --- Week01/Exercise02/arrmath.cpp | 57 +++++++++++++++++++++++++++++++++++++++++++ Week01/Exercise02/arrmath.h | 15 ++++++++++++ Week01/Exercise02/main.cpp | 26 ++++++++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 Week01/Exercise02/arrmath.cpp create mode 100644 Week01/Exercise02/arrmath.h create mode 100644 Week01/Exercise02/main.cpp (limited to 'Week01/Exercise02') diff --git a/Week01/Exercise02/arrmath.cpp b/Week01/Exercise02/arrmath.cpp new file mode 100644 index 0000000..d518134 --- /dev/null +++ b/Week01/Exercise02/arrmath.cpp @@ -0,0 +1,57 @@ +#include "arrmath.h" + +int sum(const int* elements, unsigned length) { + if (elements == nullptr || length == 0) + return 0; + + int sum = 0; + + for (unsigned i = 0; i < length; ++i) + sum += elements[i]; + + return sum; +} + +double average(const int* elements, unsigned length) { + if (elements == nullptr || length == 0) + return 0.0; + + return (double)sum(elements, length) / length; +} + +int largest(const int* elements, unsigned length) { + if (elements == nullptr || length == 0) + return 0; + + int largest = elements[0]; + for (unsigned i = 1; i < length; ++i) + if (elements[i] > largest) + largest = elements[i]; + + return largest; +} + +int smallest(const int* elements, unsigned length) { + if (elements == nullptr || length == 0) + return 0; + + int smallest = elements[0]; + for (unsigned i = 1; i < length; ++i) + if (elements[i] < smallest) + smallest = elements[i]; + + return smallest; +} + +unsigned findIndex(const int* elements, unsigned length, int elementToSearch) { + if (elements == nullptr || length == 0) + return length; + + for (unsigned i = 0; i < length; ++i) + if (elements[i] == elementToSearch) + return i; + + // Коректно е да връщаме length вместо 0, защото + // 0 може да е валиден индекс в масива с елементи + return length; +} diff --git a/Week01/Exercise02/arrmath.h b/Week01/Exercise02/arrmath.h new file mode 100644 index 0000000..4f1a550 --- /dev/null +++ b/Week01/Exercise02/arrmath.h @@ -0,0 +1,15 @@ +#ifndef ARRMATH +#define ARRMATH + +// Сума на стойностите в elements +int sum(const int* elements, unsigned length); +// Средно аритметично на стойностите в elements +double average(const int* elements, unsigned length); +// Най-голямата стойност в elements +int largest(const int* elements, unsigned length); +// Най-малката стойност в elements +int smallest(const int* elements, unsigned length); +// Връща индекса на първото срещане на elementToSearch +unsigned findIndex(const int* elements, unsigned length, int elementToSearch); + +#endif diff --git a/Week01/Exercise02/main.cpp b/Week01/Exercise02/main.cpp new file mode 100644 index 0000000..9e3c593 --- /dev/null +++ b/Week01/Exercise02/main.cpp @@ -0,0 +1,26 @@ +#include +#include "arrmath.h" + +int main() { + unsigned N; + std::cin >> N; + + int* arr = new int[N]; + for (unsigned i = 0; i < N; ++i) + std::cin >> arr[i]; + + int startIndex = findIndex(arr, N, smallest(arr, N)); + int endIndex = findIndex(arr, N, largest(arr, N)); + + if (startIndex > endIndex) { + int temp = startIndex; + startIndex = endIndex; + endIndex = temp; + } + + std::cout << average(arr + startIndex, endIndex - startIndex + 1) << std::endl; + + delete[] arr; + + return 0; +} -- cgit v1.3.1-23-gd82d