C ++ Найти минимальное значение в каждой строке матрицы n * m

Как найти минимальное значение в каждой строке матрицы n * m и поместить эти значения в новый массив? У меня есть этот код, но он не работает должным образом:

void min(const int t[max_city][max_bird], int allmin[], int n, int m)
{
int min=t[0][0];
for(int i=0; i<n; ++i)
{
for(int j=0; j<m; ++j)
{
if(t[i][j]<min)
{
min=t[i][j];
}
}
allmin[i]=min;
cout << i+1 << ". min: " << allmin[i] << endl;
}
}

0

Решение

декларировать min внутри первого цикла и инициализируйте его там:

for(int i=0; i<n; ++i)
{
int min= INT_MAX; //do this here so that it gets initialized each time!

for(int j=0; j<m; ++j)
{
//your code
}
//etc
}

Использовать INT_MAX, включают <climits>,


С помощью std::min_element, Ваша функция может быть переписана как:

void min(const int t[max_city][max_bird], int allmin[], int n, int m)
{
for(int i=0; i<n; ++i)
{
allmin[i] = *std::min_element(t[i], t[i] + m);
}
}

Стало так мало!

Функция std::min_element возвращает указатель на минимальный элемент, поэтому вы разыменовать возвращаемый указатель для получения значения (минимального элемента).

Использовать std::min_element в вашей программе вы должны включить этот заголовок:

#include <algorithm>

Надеюсь, это поможет.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]