Сортировка строк матрицы по невозрастанию

Дана действительная матрица размером m * n; упорядочить (переставить) строки матрицы по невозрастанию сумм элементов строк. Разрешается использовать дополнительный массив.

Алгоритм:

1.Создаем переменные и массивы.
2.Генерируем числа основной матрицы.
3.Выводим на экран изначальную матрицу.
4.Суммируем строки матрицы и заносим значения в массив sum.
5.Сортируем массив sum пузырьковой сортировкой.
6.Меняем строки изначальной матрицы.
7.Выводим на екран отсортированную матрицы.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define M 5
#define N 5
 
   int main () {
      int a[M][N];//основная матрица
      int i, j, k;//переменные
      int sum[5];//массив для хранения сумм строк
      int dop[5];//дополнительный массив для перестановки строк матрицы
      int pr;//количество проходов
      int tmp;//временная переменная
 
      clrscr ();//очистка экрана
 
      randomize();//ф-я генерации чисел
 
	for (i = 0;i<M;i++)
	   for (j = 0; j<N; j++)
	    {
	     a[i][j]=random(10);
	    }
 
	for (i = 0; i<5; i++) { //вывод изначальной матрицы
	    for (j = 0; j<5; j++)
	       printf ("%4d", a[i][j]);
	       printf ("\n");
	 }
	printf("\n");
 
	for (i = 0; i<5; i++){//заносим результат сумм в sum
	   sum[i]=0;
	   for (j = 0; j<5; j++)
	   sum[i]+= a[i][j];
	 }
 
	for (pr = 1; pr<5; pr++){ //количество проходов
	   for (i = 0; i<5; i++){ //число сравненний
	       if (sum[i] < sum[i+1]){
		 tmp = sum[i];
		 sum[i] = sum[i+1];
		 sum[i+1] = tmp;
		   for(k = 0; k < M; k++) {//меняем изначальную матрицу
		     tmp = a[i][k];
		     a[i][k] = a[i+1][k];
		     a[i+1][k] = tmp;
		     }
		}
	    }
	}
	for (i = 0; i < 5; i++) {//вывод на экран отсортированной матрицы
		for (j = 0; j < 5; j++)
		printf ("%4d", a[i][j]);
		printf ("\n");
	}
 getch ();
 return 0;
 
}

ВложениеРазмер
sorted.rar10.05 кб