Упорядочить строки матрицы по неубыванию суммы их элементов - C (СИ)
Формулировка задачи:
Дана вещественная матрица размером 10х10. Упорядочить её строки по не убыванию суммы их элементов.
Решение задачи: «Упорядочить строки матрицы по неубыванию суммы их элементов»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #define N 10 typedef struct sum_item { float sum; int idx; } sum_item_t; int cmp(const sum_item_t *i, const sum_item_t *j) { return (*i).sum - (*j).sum; } int main() { float a[N][N], b[N][N]; sum_item_t s[N]; for (int i=0;i<N;i++) { s[i].sum = 0; s[i].idx = i; for (int j=0;j<N;j++) { printf("a[%d][%d]=",i,j); scanf("%f", &a[i][j]); s[i].sum += a[i][j]; } } qsort(s, N, sizeof(sum_item_t), (int(*)(const void *, const void *))cmp); for (int i=0;i<N;i++) { for (int j=0;j<N;j++) { b[i][j] = a[s[i].idx][j]; printf("a[%d][%d]=%f ",i,j,b[i][j]); } printf("\n"); } return 0; }
Объяснение кода листинга программы
В этом коде:
- Объявлены матрица a[N][N] и массив s[N] типа sum_item_t, инициализированный нулями.
- В цикле заполняются значениями элементов матрицы a[N][N] и суммарной суммы в s[N].
- Далее, массив s[N] сортируется в порядке возрастания суммы его элементов с помощью функции qsort() и функции сравнения cmp().
- Во втором цикле, элементы матрицы b[N][N] заполняются значениями элементов матрицы a[N][N] с индексами, соответствующими отсортированному массиву s[N].
- Выводятся значения элементов матрицы b[N][N] на экран.
- Код завершается возвратом 0, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д