Перестановка строк матриц

Упорядочить (переставить) строки матрицы по не возрастанию сумм элементов строк. Задание номер 2 "Сортировка массивов" (см. Сборник задач для начинающего программиста)

Алгоритм:

-Находим сумму каждой строки и записываем в отдельный массив
-Используя пузырьковую сортировку сортируем массив в котором находится суммы и заодно основной массив

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
                                                             //Объявляем переменные
int ar[50][50], s[50];                                        
int i, j, k;                                          
int m, n;
int temp;
 
 
int main() {
 
	printf("input size of array MxN \n");               //Размер масива
	scanf("%d %d", &m, &n);
 
	printf ("\n");
 
	for(i=1; i<=m; i++) {                              //Записываем в основной массив псевдо случайные числа
	    for(j=1; j<=n; j++)
	    ar[i][j]=rand()%10;
	}
	for(i=1; i<=m; i++) {                              //Распечатываем их
	    for(j=1; j<=n; j++)
                printf(" %2d ", ar[i][j]);
 
            printf ("\n");
 
	}
 
	for(i=1; i<=m; i++) {                              //Находим сумму строк
		for(j=1; j<=n; j++)
		s[i]=s[i]+ar[i][j];
 
	}
	printf ("\n");
 
        for(i=1; i<=m; i++)                                //Распечатываем суммы для проверки что все идет правильно
         printf(" %2d ", s[i]);
 
	printf ("\n");
	temp=0;
	for(i=1; i<=m; i++){
        if(i+1<=m) {
		for(k=1; k<=m; k++){
			if(s[k]<s[k+1]) {                 //Сортируем массив S по не возростанию
			   temp=s[k];
			   s[k]=s[k+1];
			   s[k+1]=temp;
			   for(j=1; j<=n; j++) {         //Сортируем строки в основном масиве
				   temp=ar[i][j];
				   ar[i][j]=ar[i+1][j]; 
				   ar[i+1][j]=temp;
 
				}                        //В обоих случаях мы использовали сортировку Пузырька
			}
                 }
            }
	}
 
	printf ("\n");
 
	for( i=1; i <=m; i++ ){                         //Распечатываем получившийся основной массив
		for( j=1; j<=n; j++)
		    printf("% 2d ", ar[i][j]);
 
	    printf("\n");
	}
    printf("\n");                                     //Для проверки распечатываем массив S
    for(i=1; i<=m; i++)
        printf(" %2d ", s[i]);
 
 
 
 getch();
 return 0;
}

Ключевые слова: 
сортировка массива, матрица
ВложениеРазмер
Masiv #2.rar7.22 кб