Я пытаюсь создать функцию, которая выводит сумму всех элементов max каждой строки.Я написал функцию, которая печатает 5 элементов max из двухмерного массива, и для вычисления суммы мне нужно поместить все элементы max в один массив.Теперь я понятия не имею, почему мой код показывает мне неправильные значения, и я буду признателен за любую помощь, которую вы можете оказать.
#include <stdio.h>
#define MATRIX_SIZE 5
void bubleSort(int arr[MATRIX_SIZE][MATRIX_SIZE])
{
for (int i = 0; i < MATRIX_SIZE; i++)
{
for (int j = 0; j < MATRIX_SIZE; j++)
{
for (int h = j + 1; h < MATRIX_SIZE; h++)
{
if (arr[j][i] > arr[h][i])
{
int tmp = arr[j][i];
arr[j][i] = arr[h][i];
arr[h][i] = tmp;
}
}
}
}
}
int find_max_sum(int arr[MATRIX_SIZE][MATRIX_SIZE])
{
int sum = 0;
for (int i = 0; i < MATRIX_SIZE; i++)
{
int max = arr[i][0];
for (int j = 1; j < MATRIX_SIZE; j++)
{
if (max < arr[i][j])
{
max = arr[i][j];
}
}
printf("%d-th row max = %d\n", i + 1, max);
sum += max;
}
return sum;
}
int printing(int arr[MATRIX_SIZE][MATRIX_SIZE])
{
for (int i = 0; i < MATRIX_SIZE; i++)
{
for (int j = 0; j < MATRIX_SIZE; j++)
{
printf("%5.0d", arr[i][j]);
}
printf("\n");
}
puts("\n");
return 0;
}
int main() {
int arr[MATRIX_SIZE][MATRIX_SIZE] = {
{ 12, 7, 23, 13, 4 },
{ 67, 15, 34, -5, 9 },
{ 2, 5, 17, -23, 45 },
{ 26, -6, 23, -5, -9 },
{ 18, 37, -8, 26, 12 }
};
printing(arr);
printf("\nSum of max elements of 2d array = %d\n", find_max_sum(arr));
bubleSort(arr);
printing(arr);
printf("\nSum of max elements of 2d array = %d\n", find_max_sum(arr));
}
(Обновлено)
У меня есть задача отсортировать и распечатать макс.элементы каждой строки и выводят их сумму, но я должен напечатать ее в отдельной функции, у меня должно быть минимум 3 функции - sort, maxElementOfEachRow, Sum (maxElementOfEachRow), поэтому я спросил о добавлении элементов max в массив, чтобы использовать егов следующей функции Sum или есть другой способ решить эту проблему?