Упорядочить строки матрицы по убыванию - 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, что означает успешное завершение работы программы.