Перестановкой строк и столбцов упорядочить по возрастанию элементы главной диагонали квадратной матрицы - 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() используется для обмена значениями двух переменных.