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

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

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

Мне нужно упорядочить строки массивы по возрастанию сумм элементов каждой строки. То что я сделал находится ниже. Не много опишу. Задаю произвольную матрицу. Нахожу сумму в каждой строке и присваиваю это значение одномерному массивы B. Как мне теперь упорядочить строки двумерного массива? Прощу объяснить, а не скопировать откуда-нибудь неизвестно что. Буду очень признателен.
Листинг программы
  1. #pragma hdrstop
  2. #pragma argsused
  3. #include <tchar.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <conio.h>
  7. #include <windows.h>
  8. int _tmain(int argc, _TCHAR* argv[])
  9. {
  10. SetConsoleOutputCP(1251);
  11. SetConsoleCP(1251);
  12.  
  13. int n,m,i,j,max=0;
  14. printf("Введите размер массива");
  15. scanf ("%i %i", &n , &m);
  16. float **A = new float*[n], k;
  17. for (i = 0; i < n; i++)
  18. A[i] = new float [m];
  19. printf ("Введите матрицу A\n");
  20. for (int i=0; i < n; i++)
  21. {
  22. for (int j=0; j<m;j++)
  23. {
  24. gotoxy(5 + j*5,5+i);
  25. scanf("%f", &A[i][j]);
  26. }
  27. }
  28. float *B;
  29. B=new float[n];
  30. for (i = 0; i < n; i++) {
  31. for (j = 0;j <= m; j++)
  32. k +=A[i][j];
  33. printf ("Сумма строки = %f\t" , k);
  34. B[n]=k;
  35. k=0;
  36. printf ("Элемент массива B %f\n", B[n]);
  37. }
  38. getch();
  39. return 0;
  40. }

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <windows.h>
  5.  
  6. float sum(float * mas, int m){
  7.     float sum = 0;
  8.     for (int i = 0; i < m; i++){
  9.         sum += mas[i];
  10.     }
  11.     return sum;
  12. }
  13.  
  14. int main(){
  15.     SetConsoleOutputCP(1251);
  16.     SetConsoleCP(1251);
  17.     int n, m, i, j, max = 0;
  18.     printf("Введите размер массива: ");
  19.     scanf("%i %i", &n, &m);
  20.     float **A = new float*[n], k;
  21.     for (i = 0; i < n; i++)
  22.         A[i] = new float[m];
  23.     printf("Введите матрицу A\n");
  24.     for (int i = 0; i < n; i++){
  25.         for (int j = 0; j<m; j++){
  26.             printf("[%i][%i] = ", i, j);
  27.             scanf("%f", &A[i][j]);
  28.         }
  29.     }
  30.     float * a = new float[m];  
  31.     for (int i = 0; i < n; i++) { // i - номер прохода
  32.         for (int j = n - 1; j > i; j--){  // внутренний цикл прохода
  33.             if (sum(A[j - 1], m) > sum(A[j], m)) {
  34.                 a = A[j - 1];
  35.                 A[j - 1] = A[j];
  36.                 A[j] = a;
  37.             }
  38.         }
  39.     }
  40.     for (int i = 0; i < n; i++){
  41.         for (int j = 0; j<m; j++){
  42.             printf("[%i][%i] = %f\n", i, j, A[i][j]);          
  43.         }
  44.     }
  45.     _getch();
  46.     return 0;
  47. }

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

  1. Включаются необходимые заголовочные файлы
  2. Определяется функция для вычисления суммы элементов строки массива
  3. Определяется главная функция программы
  4. Устанавливаются кодировки ввода-вывода
  5. Задаются размеры матрицы и инициализируются переменные для работы с матрицей
  6. Вводится матрица A
  7. Создается массив a для временного хранения элементов
  8. Происходит сортировка строк матрицы по возрастанию суммы элементов каждой строки
  9. Выводится отсортированная матрица
  10. Программа завершается

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


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

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

12   голосов , оценка 4.083 из 5

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

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

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