Матрицы

  • Автор темы snickers
  • Дата начала
S

snickers

Гость
#1
Дана прямоугольная матрица.Найти строку с наибольшей и наименьшей суммой элементов.Вывести индексы этих строк и их суммы
 
R

Rififi

Гость
#2
Дана прямоугольная матрица.Найти строку с наибольшей и наименьшей суммой элементов.Вывести индексы этих строк и их суммы

C++:
#include <locale>
#include <vector>
#include <algorithm>
#include <iostream>

#include <boost/algorithm/minmax_element.hpp>
#include <boost/spirit/home/phoenix.hpp>
namespace phx = boost::phoenix;
using phx::arg_names::arg1;

template <typename T, size_t Cols, size_t Rows>
void find(const T (&m)[Cols][Rows])
{
typedef std::vector<T> V;
V sums(Cols);

std::transform(m, m+Cols, sums.begin(), phx::accumulate(arg1, 0));	
const std::pair<typename V::iterator, typename V::iterator> mx = boost::minmax_element(sums.begin(), sums.end());

std::cout << "Min element: " << *mx.first << " at line #" << std::distance(sums.begin(), mx.first) + 1 << std::endl;
std::cout << "Max element: " << *mx.second << " at line #" << std::distance(sums.begin(), mx.second) + 1 << std::endl;
}

int main()
{
setlocale(LC_ALL, "");

int m[3][4] = 
{
{-1,2,-3,4}, // сумма = 2
{1,-2,3,-4}, // сумма = -2
{1,2,3,4} // сумма = 10
};

find(m);

return 0;
}
Результат работы программы:
http://liveworkspace.org/code/c47eb505d92f...d2c06faf0a58a19