diff --git a/homework/inner-product/CMakeLists.txt b/homework/inner-product/CMakeLists.txt index 29883dae0..dc2f36e0e 100644 --- a/homework/inner-product/CMakeLists.txt +++ b/homework/inner-product/CMakeLists.txt @@ -20,7 +20,6 @@ enable_testing() add_executable(${PROJECT_NAME} main.cpp arithmeticAverage.cpp) add_executable(${PROJECT_NAME}-ut test.cpp arithmeticAverage.cpp) - target_link_libraries(${PROJECT_NAME}-ut gtest_main) include(GoogleTest) diff --git a/homework/inner-product/arithmeticAverage.cpp b/homework/inner-product/arithmeticAverage.cpp new file mode 100644 index 000000000..f964ccc09 --- /dev/null +++ b/homework/inner-product/arithmeticAverage.cpp @@ -0,0 +1,25 @@ +#include "arithmeticAverage.hpp" +#include +#include + +double ArithmeticAverage(const std::vector& numbersA, const std::vector& numbersB) { + double sum = std::transform_reduce( + begin(numbersA), end(numbersA), + begin(numbersB), + 0.0, + std::plus(), + std::plus()); + + return sum / (numbersA.size() + numbersB.size()); +} + +double Distance(const std::vector& numbersA, const std::vector& numbersB) { + double sumOfSquares = std::transform_reduce( + begin(numbersA), end(numbersA), + begin(numbersB), + 0.0, + std::plus(), + [](const auto first, const auto second) { return (first - second) * (first - second); }); + + return std::sqrt(sumOfSquares); +} \ No newline at end of file diff --git a/homework/inner-product/arithmeticAverage.hpp b/homework/inner-product/arithmeticAverage.hpp new file mode 100644 index 000000000..81c6a2cf2 --- /dev/null +++ b/homework/inner-product/arithmeticAverage.hpp @@ -0,0 +1,5 @@ +#pragma once +#include + +double ArithmeticAverage(const std::vector&, const std::vector&); +double Distance(const std::vector&, const std::vector&); \ No newline at end of file diff --git a/homework/inner-product/main.cpp b/homework/inner-product/main.cpp new file mode 100644 index 000000000..5aa117424 --- /dev/null +++ b/homework/inner-product/main.cpp @@ -0,0 +1,4 @@ +int main() +{ + +} \ No newline at end of file