Упорядочить строки матрицы по убыванию - 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; }
Объяснение кода листинга программы
В этом коде происходит следующее:
- Связывание необходимых библиотек: Код начинается с подключения необходимых библиотек, таких как stdio.h, stdlib.h, time.h и math.h
- Определение функции fill: Эта функция используется для заполнения массива случайными числами в заданном диапазоне. Она принимает указатель на первый элемент массива, количество элементов, минимальное и максимальное значение для генерации случайных чисел.
- Определение функции dump: Эта функция используется для вывода содержимого массива на экран. Она принимает указатель на первый элемент массива, количество элементов и количество знаков после запятой, которые нужно вывести.
- Определение функции desc_cmp: Эта функция используется для сортировки массива в порядке убывания. Она принимает указатели на два сравниваемых элемента и возвращает -1, 0 или 1, если первый элемент меньше, равен или больше второго соответственно.
- Определение констант: В коде определены несколько констант, таких как ROWS (количество строк в матрице), COLUMNS (количество столбцов в матрице), LEFT и RIGHT (минимальное и максимальное значение для генерации случайных чисел).
- Основная функция main: В этой функции создается матрица double matrix[ROWS][COLUMNS] и инициализируется случайными значениями. Затем матрица выводится на экран в исходном порядке.
- Сортировка матрицы: Затем каждая строка матрицы сортируется в порядке убывания с помощью функции qsort и функции сравнения desc_cmp.
- Вывод отсортированной матрицы: Отсортированные строки матрицы выводятся на экран.
- Завершение программы: В конце программы возвращается 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д