#include <functional> #include <algorithm> #include <iostream> #include <iterator> /* Вот такая задачка: задана матрица А(6,6) вещественных чисел. Построить одномерный масив, состоящий из элементов матрицы, являющихся наименьшими по величине в каждой строке. Наименьшие элементы находятся с помощью подпрограммы. */ // Вычисление минимального элемента в одномерном массиве template <typename T> struct calculate_min : public std::unary_function<T, T> { template <const size_t N> T operator()(const T (&arr)[N]) const { return *std::min_element(arr, arr+N); } }; // Поиск минимальных элементов template <typename T, const size_t N> void find_mins(const T (&m)[N][N], T (&arr)[N]) { std::transform(m, m+N, arr, calculate_min<T>()); } // Вывод массива на экран в читабельном виде template <typename OS, typename T, const size_t N> OS& operator << (OS& os, const T (&arr)[N]) { os << "["; std::copy(arr, arr+N, std::ostream_iterator<T>(os, " ")); return os << "]"; } int main() { const size_t N = 6; float m[N][N] = { /* инициализация массива */ }; float mins[N]; // результат find_mins(m, mins); std::cout << mins << std::endl; return 0; } |