Матрицы

Тема в разделе "C/C++/C#", создана пользователем snickers, 9 янв 2011.

  1. snickers

    snickers Гость

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

    Rififi Гость

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

    Код (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
     
Загрузка...
Похожие Темы - Матрицы
  1. Dantes95
    Ответов:
    0
    Просмотров:
    1.419
  2. kobrin13
    Ответов:
    0
    Просмотров:
    1.155
  3. FCDK
    Ответов:
    0
    Просмотров:
    1.376
  4. PahaStar
    Ответов:
    0
    Просмотров:
    1.172
  5. Evgesha777
    Ответов:
    1
    Просмотров:
    1.488

Поделиться этой страницей