Отсортировать главные диагонали матрицы по возрастанию методом вставки - C (СИ)
Формулировка задачи:
Дана матрица размерностью nxn, содержащая целые числа. Отсортировать главные диагонали матрицы по возрастанию методом вставки.
Заранее благодарен!
Решение задачи: «Отсортировать главные диагонали матрицы по возрастанию методом вставки»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #define H 5 #define W 5 int main(){ int matrix[H][W] = { {2,3,3,1,5}, {2,1,2,2,2}, {2,3,7,4,5}, {1,1,2,3,6}, {1,2,3,4,5} }; int i,j,tmp; for( i = 1; i < H ; i++ ){ tmp = matrix[i][i]; for( j = i; j>0&&matrix[j-1][j-1]>tmp; j--)matrix[j][j]=matrix[j-1][j-1]; matrix[j][j]=tmp; } for( i = 0 ; i < H; i++ ){ for( j = 0 ; j < W; j++)printf("%d ",matrix[i][j]); printf("\n"); } getch(); return 0; }
Объяснение кода листинга программы
Код представлен на языке C и решает задачу сортировки главных диагоналей матрицы по возрастанию методом вставки. Список действий, которые выполняются в коде:
- Включаются необходимые заголовочные файлы:
stdio.h
- для работы с вводом/выводом;conio.h
- для работы с клавиатурой и мышью (в данном случае используется функцияgetch()
для приостановки выполнения программы и получения ввода от пользователя).
- Определяются размеры матрицы:
H
- количество строк;W
- количество столбцов.
- Инициализируется матрица:
- Матрица
matrix
заполняется значениями.
- Матрица
- Сортировка главных диагоналей матрицы методом вставки:
- Внешний цикл
for
проходит по каждой строке матрицы, начиная со второй строки (индекс 1), так как первая строка уже будет содержать отсортированные значения. - Внутренний цикл
for
проходит по каждой позиции внутри текущей строки. Если значение в текущей позиции больше значения в предыдущей позиции (т.е. на диагонали влево и вверх), то значения меняются местами. - Значение на текущей позиции присваивается значению, которое было на предыдущей позиции.
- Внешний цикл
- Вывод отсортированной матрицы:
- Внутренний цикл
for
проходит по каждой строке матрицы. - Внешний цикл
for
проходит по каждому столбцу текущей строки. - Каждое значение матрицы выводится на экран через функцию
printf()
.
- Внутренний цикл
- Ожидание нажатия клавиши:
- Функция
getch()
ожидает нажатия клавиши.
- Функция
- Возврат 0:
- Значение 0 возвращается в качестве кода завершения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д