В каждой строке матрицы поменять местами максимальный элемент и элемент, находящийся на главной диагонали - C (СИ)
Формулировка задачи:
Добрый Дня Всем!
Столкнулся с проблемой в решении задания:
В квадратной матрице С размера m*m в каждой строке поменять местами максимальный элемент и элемент, находящийся на главной диагонали.
(Написать и протестировать функцию)
Решение задачи: «В каждой строке матрицы поменять местами максимальный элемент и элемент, находящийся на главной диагонали»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#define SIZE_T 5
int main(void) {
int i, j;
int max;
int max_row, max_col;
int t[SIZE_T][SIZE_T] = { {1, 4, -5, 0, 7},
{4, 7, 8, -1, 2},
{1, 0, 4, 7, 4},
{3, -6, -8, 1, 5},
{2, -9, 5, 7, 8} };
for (i = 0; i < SIZE_T; ++i) {
for (j = 0; j < SIZE_T; ++j) {
printf("%5d", t[i][j]);
}
printf("\n");
}
for (i = 0; i < SIZE_T; ++i) {
max = 0;
for (j = 0; j < SIZE_T; ++j) {
if (t[i][j] > max) {
max = t[i][j];
max_row = i;
max_col = j;
}
}
j = i;
t[max_row][max_col] = t[i][j];
t[i][j] = max;
}
printf("\n");
for (i = 0; i < SIZE_T; ++i) {
for (j = 0; j < SIZE_T; ++j) {
printf("%5d", t[i][j]);
}
printf("\n");
}
return EXIT_SUCCESS;
}
Объяснение кода листинга программы
- Объявлены массивы:
t[SIZE_T][SIZE_T]- матрица размеромSIZE_T x SIZE_Tдля хранения исходных данных;max- для хранения максимального элемента;max_rowиmax_col- для хранения координат максимального элемента.
- В первой части программы исходные данные выводятся на экран.
- Во второй части программы:
- Перебираются все строки матрицы.
- Для каждой строки находится максимальное значение и его координаты.
- Записывается максимальное значение на место элемента, находящегося на главной диагонали.
- Элемент, находящийся на главной диагонали, заменяется на максимальное значение.
- В третьей части программы результаты выводятся на экран.
- Программа завершается возвратом значения
EXIT_SUCCESS.