diff --git a/modules/04_arrays_and_strings/src/c_arrays.cpp b/modules/04_arrays_and_strings/src/c_arrays.cpp index 9290afb..38828aa 100644 --- a/modules/04_arrays_and_strings/src/c_arrays.cpp +++ b/modules/04_arrays_and_strings/src/c_arrays.cpp @@ -1,9 +1,37 @@ #include "c_arrays.hpp" +#include + namespace arrays { -auto array_sum(const int* data, std::size_t size) -> int { (void)data; (void)size; return 0; } -auto array_max(const int* data, std::size_t size) -> int { (void)data; (void)size; return 0; } -void reverse_array(int* data, std::size_t size) { (void)data; (void)size; } +auto array_sum(const int* data, const std::size_t size) -> int { + auto sum = 0; + for (std::size_t i = 0; i < size; ++i) { + sum += data[i]; + } + return sum; +} + + +auto array_max(const int* data, const std::size_t size) -> int { + auto max = INT_MIN; + for (std::size_t i = 0; i < size; ++i) { + if (data[i] > max) { + max = data[i]; + } + } + return max; +} + +void reverse_array(int* data, const std::size_t size) { + auto swap = [&data](const std::size_t i, const std::size_t j) { + const auto temp = data[i]; + data[i] = data[j]; + data[j] = temp; + }; + for (std::size_t i = 0; i < size / 2; ++i) { + swap(i, size - i - 1); + } +} } // namespace arrays