Перестановкой строк и столбцов упорядочить по возрастанию элементы главной диагонали квадратной матрицы - C (СИ)
Формулировка задачи:
Заполнить матрицу размером N×M целыми случайными числами, распределенными в диапазоне от a до b.
N=3; M=3; a=0; b=10. Перестановкой строк и столбцов упорядочить по возрастанию элементы главной диагонали квадратной матрицы. Задачу разбить на подзадачи, которые оформить в виде функций, причем объявления этих функций и функция main(…) должны находиться в разных файлах.
первый файл с заполнением массива:
А вот со вторым файлом проблемы. То бишь не могу понять как переставить строки и столбцы в правильном порядке
#include "stdafx.h" #include <stdlib.h> #include <conio.h> #include <stdio.h> #include <time.h> void matrix_init() { int const iCount = 3, jCount = 3; srand ((unsigned) time (NULL)); int i, j; for (i = 0; i < iCount; i++) { for (j = 0; j < jCount; j++) { source[i*iCount+j] = rand()%10; printf("%i\t", ((source[i*iCount+j]))); } printf("\n"); } }
Решение задачи: «Перестановкой строк и столбцов упорядочить по возрастанию элементы главной диагонали квадратной матрицы»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <conio.h> #define N 5 void swap(int& n1, int& n2); int main() { int** X = new int*[N]; for (int i = 0; i < N; i++) { X[i] = new int[N]; for (int j = 0; j < N; j++) { X[i][j] = rand() % 10; printf("%d ",X[i][j]); } printf("\n"); } printf("\n"); for (int i = 0; i < N; i++) { for (int k = i+1; k < N; k++) if (X[k][k] < X[i][i]) { swap(X[i][k],X[k][k]); swap(X[k][i],X[i][i]); for (int m = 0; m < N; m++) swap(X[m][i],X[m][k]); } } for (int z1 = 0; z1 < N; z1++) { for (int z2 = 0; z2 < N; z2++) printf("%d ",X[z1][z2]); printf("\n"); } _getch(); return 0; } void swap(int& n1, int& n2) { int _tn = n1; n1 = n2; n2 = _tn; }
Объяснение кода листинга программы
Код представлен на языке C и выполняет следующие действия:
- Создаёт матрицу NxN (N=5) случайных целых чисел.
- Сортирует элементы главной диагонали (и только их) по возрастанию, используя алгоритм пузырька.
- Выводит отсортированную матрицу. Вот список действий, оформленный в виде нумерованного списка с названиями и значениями переменных:
- Включает необходимые заголовочные файлы
- Определяет размерность матрицы N
- Создаёт и инициализирует матрицу
- Заполняет матрицу случайными целыми числами от 0 до 9
- Выводит матрицу на экран
- Сортирует элементы главной диагонали по возрастанию
- Выводит отсортированную матрицу
- Завершает работу программы Алгоритм пузырька, использованный в программе, сравнивает пары соседних элементов главной диагонали и, если текущий элемент больше следующего, меняет их местами. После прохождения по всем элементам главной диагонали, наиболее большие элементы будут расположены в конце. Алгоритм пузырька не является оптимальным для больших матриц, так как имеет квадратичную сложность. Функция swap() используется для обмена значениями двух переменных.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д