Упорядочить двухмерный массив по возрастанию и убыванию - C (СИ)
Формулировка задачи:
Помогите написать программу по упорядочивания двухмерным массивом возрастание и убывание
Решение задачи: «Упорядочить двухмерный массив по возрастанию и убыванию»
textual
Листинг программы
#include <stdio.h> #include <Windows.h> #include <time.h> #define COL_ROW 10 #define BORDER_HIGH 100 #define BORDER_LOW 1 void CreateMatrix(int *Matrix, int col_rows); void PrintMatrix(int *Matrix, int col_rows); int CompareAsc(const void *a, const void *b); int CompareDesc(const void *a, const void *b); int main(void) { srand(time(NULL)); int *Matrix = malloc(COL_ROW*COL_ROW * sizeof(int)); printf("Input matrix:\n"); CreateMatrix(Matrix, COL_ROW); qsort(Matrix, COL_ROW*COL_ROW, sizeof(int), CompareAsc); printf("\n\nAscending order:\n"); PrintMatrix(Matrix, COL_ROW); qsort(Matrix, COL_ROW*COL_ROW, sizeof(int), CompareDesc); printf("\n\nDescending order: \n"); PrintMatrix(Matrix, COL_ROW); system("pause"); return 0; } int CompareAsc(const void *a, const void *b) { return (*(int*)a - *(int*)b); } int CompareDesc(const void *a, const void *b) { return (*(int*)b - *(int*)a); } void CreateMatrix(int *Matrix, int col_rows) { int i, j; for (i = 0; i < col_rows; i++) { for (j = 0; j < col_rows; j++) { Matrix[i*col_rows + j] = rand() % (BORDER_HIGH + 1 - BORDER_LOW) + BORDER_LOW; printf("%3d ", Matrix[i*col_rows + j]); } printf("\n"); } } void PrintMatrix(int *Matrix, int col_rows) { int i, j; for (i = 0; i < col_rows; i++) { for (j = 0; j < col_rows; j++) { printf("%3d ", Matrix[i*col_rows + j]); } printf("\n"); } }
Объяснение кода листинга программы
Этот код представляет собой программу на языке C, которая создает случайную двумерную матрицу из 100 элементов, используя функцию rand() для генерации случайных чисел в заданном диапазоне.
Затем, используя функцию qsort() из библиотеки
- Инициализация переменных и библиотек.
- Создание матрицы с помощью функции malloc().
- Вывод исходной матрицы на экран с помощью функции CreateMatrix().
- Сортировка матрицы по возрастанию с помощью функции qsort() и функции CompareAsc().
- Вывод отсортированной по возрастанию матрицы на экран с помощью функции PrintMatrix().
- Сортировка матрицы по убыванию с помощью функции qsort() и функции CompareDesc().
- Вывод отсортированной по убыванию матрицы на экран с помощью функции PrintMatrix().
- Ожидание нажатия клавиши с помощью функции system() для приостановки выполнения программы.
- Возврат значения 0, что означает успешное выполнение программы.