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

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

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

Дана вещественная матрица размером 10х10. Упорядочить её строки по не убыванию суммы их элементов.

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define N 10
  5.  
  6. typedef struct sum_item {
  7.     float sum;
  8.     int idx;
  9. } sum_item_t;
  10.  
  11. int cmp(const sum_item_t *i, const sum_item_t *j)
  12. {
  13.     return (*i).sum - (*j).sum;
  14. }
  15.  
  16. int main()
  17. {
  18.     float a[N][N], b[N][N];
  19.     sum_item_t s[N];
  20.    
  21.     for (int i=0;i<N;i++) {
  22.         s[i].sum = 0;
  23.         s[i].idx = i;
  24.         for (int j=0;j<N;j++) {
  25.             printf("a[%d][%d]=",i,j);
  26.             scanf("%f", &a[i][j]);
  27.             s[i].sum += a[i][j];
  28.         }
  29.     }
  30.    
  31.     qsort(s, N, sizeof(sum_item_t), (int(*)(const void *, const void *))cmp);
  32.    
  33.     for (int i=0;i<N;i++) {
  34.         for (int j=0;j<N;j++) {
  35.             b[i][j] = a[s[i].idx][j];
  36.             printf("a[%d][%d]=%f ",i,j,b[i][j]);
  37.         }
  38.         printf("\n");
  39.     }
  40.    
  41.     return 0;
  42. }

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

В этом коде:

  1. Объявлены матрица a[N][N] и массив s[N] типа sum_item_t, инициализированный нулями.
  2. В цикле заполняются значениями элементов матрицы a[N][N] и суммарной суммы в s[N].
  3. Далее, массив s[N] сортируется в порядке возрастания суммы его элементов с помощью функции qsort() и функции сравнения cmp().
  4. Во втором цикле, элементы матрицы b[N][N] заполняются значениями элементов матрицы a[N][N] с индексами, соответствующими отсортированному массиву s[N].
  5. Выводятся значения элементов матрицы b[N][N] на экран.
  6. Код завершается возвратом 0, что означает успешное выполнение.

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


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

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

11   голосов , оценка 3.818 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы