Упорядочить двухмерный массив по возрастанию и убыванию - 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() из библиотеки , матрица сортируется дважды: сначала по возрастанию, затем по убыванию. Функции CompareAsc и CompareDesc определяют порядок сортировки. Функция CreateMatrix создает матрицу, заполняя ее случайными числами. Функция PrintMatrix выводит матрицу на экран. Вот список действий, которые выполняет этот код:

  1. Инициализация переменных и библиотек.
  2. Создание матрицы с помощью функции malloc().
  3. Вывод исходной матрицы на экран с помощью функции CreateMatrix().
  4. Сортировка матрицы по возрастанию с помощью функции qsort() и функции CompareAsc().
  5. Вывод отсортированной по возрастанию матрицы на экран с помощью функции PrintMatrix().
  6. Сортировка матрицы по убыванию с помощью функции qsort() и функции CompareDesc().
  7. Вывод отсортированной по убыванию матрицы на экран с помощью функции PrintMatrix().
  8. Ожидание нажатия клавиши с помощью функции system() для приостановки выполнения программы.
  9. Возврат значения 0, что означает успешное выполнение программы.

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы