Сортировка массива по невозрастанию сумм элементов столбцов

Дана действительная матрица размером m * n; упорядочить (пе­реставить) столбцы матрицы по невозрастанию сумм элементов стол­бцов. Разрешается использовать дополнительный массив. Задача № 16. Сортировка массивов (см. "Сборник задач для начинающего программиста")

Алгоритм :
1) Создаем массив M*N
2) Находим сумму элементов столбцов и записываем в дополнительный массив
3) Применяем метод сортировки выбором для дополнительного массива и соответствующих ему столбцов данной матрицы
4) Выводим на экран отсортированный массив

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
#define P 100
 
int a[P][P];
int temp[P];
 
int  M, N;
int i, j, h ,k;
 
int main() {
 
clrscr();
 
randomize();
 
 
 
printf ("Enter sizes of matrix : " );            // вводим размер матрицы
scanf( "%d  %d", &M, &N );
 
 printf("\n\n");
 
for( i = 0; i < N; i++ )  {
  for( j = 0; j < M; j++ )  {
 
  a[i][j] = rand()%30;            // заполняем случайными числами
 
  printf( " %2d ", a[i][j] );
 
 }
  printf("\n");
}
 
  printf ("\n\n");
 
  for( j = 0; j < M; j++ ) {
    for( i = 0; i < N; i++ )        // находим суммы элементов столбцов
     temp[j]+=a[i][j];             // и записываем в дополнительный массив
 
   printf( " %2d ", temp[j] );   // выводим его на экран
 
  }
   printf("\n\n");
 
   for (j=0; j < M ; j++) {         // сортировка выбором
    for ( k=j+1 ; k < M ; k++) {
 
     if (temp[j] < temp[k]) {
 
       h=temp[j];
 
       temp[j]=temp[k];
 
       temp[k]=h ;
 
      for (i=0 ; i < N ; i++) {
 
       h=a[i][j];                       //переставляем столбцы 
 
       a[i][j]=a[i][k];
 
       a[i][k]=h;
 
      }
     }
    }
   }
 
      for( i = 0; i < N; i++ )  {        // печатаем отсортированую матрицу
       for( j = 0; j < M; j++ )  {
 
       printf( " %2d ", a[i][j] );
 
       }
	printf("\n");
      }
 
	printf("\n\n");
 
 
   for( j = 0; j < M; j++ )            // обнуляем дополнительный массив
 
    temp[j]=0;
 
 
 
   for( j = 0; j < M; j++ ) {  
    for( i = 0; i < N; i++ )
 
     temp[j]+=a[i][j];                       // выыодим суммы элементов столбцов отсортированного массива
 
     printf( " %2d ", temp[j] );
 
   } 
 
getch();
 
return 0;
 
}

Ключевые слова: 
сортировка массива
ВложениеРазмер
16_ds.rar11.75 кб