Упорядочить строки матрицы по убыванию - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста написать коды для след. условий: 1.Дана вещественная матрица размером N x M. Упорядочить ее строки по убыванию. буду безгранично Вам признателен.

Решение задачи: «Упорядочить строки матрицы по убыванию»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
#define realrand(left, right) ( fabs(sin(rand())) * ((right) - (left)) + (left) )
 
void fill(double * array, size_t count, const double min, const double max) {
    while ( count-- )
        *array++ = realrand(min, max);
}
 
void dump(const double * array, size_t count, const size_t afterpoint) {
    while ( count-- )
        printf("%.*f%c", afterpoint, *array++, ( count ) ? ' ' : '\n');
}
 
int desc_cmp(const void * a, const void * b) {
    double d = *(double*)b - *(double*)a;
    return ( d < 0.0 ) ? -1 : ( d > 0.0 ) ? 1 : 0;
}
 
#define LEFT       (0)
#define RIGHT      (9)
#define ROWS       (5)
#define COLUMNS    (10)
#define AFTERPOINT (3)
 
int main(void) {
    double matrix[ROWS][COLUMNS];
    size_t row;
    
    srand(time(NULL));
    
    printf("Unsorted rows:\n");
    for ( row = 0; row < ROWS; ++row ) {
        fill(matrix[row], COLUMNS, LEFT, RIGHT);
        dump(matrix[row], COLUMNS, AFTERPOINT);
    }
    
    printf("\nDescendant sorted rows:\n");
    for ( row = 0; row < ROWS; ++row ) {
        qsort(matrix[row], COLUMNS, sizeof(double), desc_cmp);
        dump(matrix[row], COLUMNS, AFTERPOINT);
    }
    
    return 0;
}

Объяснение кода листинга программы

В этом коде происходит следующее:

  1. Связывание необходимых библиотек: Код начинается с подключения необходимых библиотек, таких как stdio.h, stdlib.h, time.h и math.h
  2. Определение функции fill: Эта функция используется для заполнения массива случайными числами в заданном диапазоне. Она принимает указатель на первый элемент массива, количество элементов, минимальное и максимальное значение для генерации случайных чисел.
  3. Определение функции dump: Эта функция используется для вывода содержимого массива на экран. Она принимает указатель на первый элемент массива, количество элементов и количество знаков после запятой, которые нужно вывести.
  4. Определение функции desc_cmp: Эта функция используется для сортировки массива в порядке убывания. Она принимает указатели на два сравниваемых элемента и возвращает -1, 0 или 1, если первый элемент меньше, равен или больше второго соответственно.
  5. Определение констант: В коде определены несколько констант, таких как ROWS (количество строк в матрице), COLUMNS (количество столбцов в матрице), LEFT и RIGHT (минимальное и максимальное значение для генерации случайных чисел).
  6. Основная функция main: В этой функции создается матрица double matrix[ROWS][COLUMNS] и инициализируется случайными значениями. Затем матрица выводится на экран в исходном порядке.
  7. Сортировка матрицы: Затем каждая строка матрицы сортируется в порядке убывания с помощью функции qsort и функции сравнения desc_cmp.
  8. Вывод отсортированной матрицы: Отсортированные строки матрицы выводятся на экран.
  9. Завершение программы: В конце программы возвращается 0, что означает успешное завершение работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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