Дана действительная матрица размером m * n; упорядочить (переставить) строки матрицы по неубыванию значений наименьших элементов строк матрицы. Разрешается использовать дополнительный массив. Задание №3(Сортировка массивов) (см. "Сборник задач для начинающего программиста"). Алгоритм: -Заводим двумерный массив, хранящий матрицу m*n, и массив для минимальных значений её строк. -Заполняем матрицу псевдослучайными числами. -Выводим её на экран. -Перебирая каждое число в строке, заполняем массив с минимальными значениями строк. -Сортируем матрицу, сравнивая элементы массива с минимальными значениями строк. #include<stdio.h> #include<stdlib.h> //подключаем библиотеку для работы с функцией RANDOMIZE #include<conio.h> //библиотека с функцией GETCH #define m 6 #define n 5 int a[m][n]; int i,j,k,l,temp; int min[m],tmp[n]; int main(){ for (i=0; i<m; i++) min[i]=101; randomize(); for (i=0; i<m; i++){ //задаём произвольную матрицу m*n for (j=0; j<n; j++){ a[i][j]=random(100); } } printf("\n Ishodnaya matritsa\n"); for (i=0; i<m; i++){ //выводим её на экран for (j=0; j<n; j++){ printf("%5d", a[i][j]); }printf ("\n"); } for (i=0; i<m; i++){ //находим и записываем в массив минимальные элементы строк данной матрицы for (j=0; j<n; j++){ if (min[i] > a[i][j] ) min[i]=a[i][j]; } } printf("\n Otsortirovannaya matritsa\n"); for (k=0; k<m-1; k++){ for (l=k+1; l<m; l++){ if (min[k]>min[l]){ for (j=0; j<n; j++){ //сортируем матрицу по неубыванию минимальных элементов строк tmp[j]=a[l][j]; //для этого, сравнивая, выстраиваем по неубыванию и элементы массива с минимальными значениями a[l][j]=a[k][j]; a[k][j]=tmp[j]; temp = min[l]; min[l]=min[k]; min[k]=temp; } } } } for (i=0; i<m; i++){ //печатаем полученную матрицу for (j=0; j<n; j++){ printf("%5d", a[i][j]); }printf ("\n"); } getch(); //задерживает экран до нажатия любой клавиши return 0; }
Ключевые слова:
массивы, сортировка массивов
|
|||||||