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