Другие языки программирования и технологии

Помогите решить задачу C++. Найти номер строки, для которой среднее арифметическое значение ее элементов максимальна

> Найти номер строки, для которой среднее арифметическое значение ее элементов максимальна

Проверка кода тут: hxxp://codepad. org/to0TeKmc

#include <iostream>
#include <locale>

#include <algorithm>
#include <iterator>
#include <numeric>

#include <stdlib.h>
#include <time.h>

#define FROM -10
#define TO 10

struct R
{
int operator()() const
{
return rand() % (TO - FROM + 1) + FROM;// -10..10
}
};

template < typename T, size_t Cols, size_t Rows >
std::ostream& operator<< (std::ostream& os, const T (&m)[ Cols ][ Rows ])
{
typedef std::ostream_iterator< T > O;
for (size_t i=0; i < Cols; i++)
{
std::copy(m[ i ], m[ i ] + Rows, O(os, "\t"));
os << std::endl;
}

return os;
}

template < typename T, size_t Cols, size_t Rows >
void fill(T (&m)[ Cols ][ Rows ])
{
std::generate_n(&m[0][0], Cols * Rows, R());
}

struct avg
{
template < typename T, size_t N >
double operator()(const T (&arr)[ N ]) const
{
return (double) std::accumulate(arr, arr + N, T()) / N;
}
};

template < typename T, size_t Cols, size_t Rows >
size_t min_index(const T (&m)[ Cols ][ Rows ])
{
double avgs[ Cols ];
return std::distance(avgs, std::min_element(avgs, std::transform(m, m + Cols, avgs, avg())));
}

int main()
{
setlocale(LC_ALL, "");
srand((unsigned) time(NULL));

int m[5][6];
fill(m);

std::cout << "Matrix: " << std::endl;
std::cout << m << std::endl;

std::cout << "Index of row with min average: " << min_index(m) << std::endl;

return 0;
}
Георгий Цопанов
Георгий Цопанов
1 769
Лучший ответ
элементы в какой структуре?
массив, список, стек, дерево???