Дана действительная матрица размером m * n; упорядочить (переставить) столбцы матрицы по невозрастанию сумм элементов столбцов. Разрешается использовать дополнительный массив. Задача № 16. Сортировка массивов (см. "Сборник задач для начинающего программиста") Алгоритм : #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; }
Ключевые слова:
сортировка массива
|
|||||||