В каждой строке матрицы поменять местами максимальный элемент и элемент, находящийся на главной диагонали - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д