Дана матрица размерностью nxn, содержащая вещественные числа. Отсортировать каждую строку матрицы по убыванию - C (СИ)
Формулировка задачи:
Дана матрица размерностью nxn, содержащая вещественные числа. Отсортировать каждую строку матрицы по убыванию элементов методом выбора
Решение задачи: «Дана матрица размерностью nxn, содержащая вещественные числа. Отсортировать каждую строку матрицы по убыванию»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int n;
do{
system("cls");
printf("Enter the size of the matrix: ");
scanf("%d", &n);
}while( n < 1 );
double arr[n][n];
size_t i, j, z;
srand(time(0));
for( i = 0; i < n; i++ ){
for( j = 0; j < n; j++ ){
arr[i][j] = (-200 + rand()%400) + (rand()%10 * 0.1);
printf(" %6.1lf", arr[i][j]);
}
printf("\r\n");
}
printf("\r\n");
system("pause");
for( i = 0; i < n; i++ ){
char ans;
do{
system("cls");
printf("Want to sort row #%d in descending order (Y/N): ", ((int)i+1));
scanf(" %c", &ans);
}while( ans != 'y' && ans != 'Y' && ans != 'n' && ans != 'N' );
if( ans == 'y' || ans == 'Y' ){
for( j = 0; j < n-1; j++ ){
for( z = j+1; z < n; z++ ){
if( arr[i][j] < arr[i][z] ){
double tmp_arr = arr[i][j];
arr[i][j] = arr[i][z];
arr[i][z] = tmp_arr;
}
}
}
}
}
printf("Sorting finished!\n\r\n");
system("pause");
system("cls");
printf("The result of the matrix:\n\r\n");
for( i = 0; i < n; i++ ){
for( j = 0; j < n; j++ )
printf(" %6.1lf", arr[i][j]);
printf("\r\n");
}
printf("\r\n");
system("pause");
return 0;
}
Объяснение кода листинга программы
Вот список действий, которые выполняет код:
- Ввод размера матрицы с помощью функции scanf.
- Генерация случайных значений для элементов матрицы с помощью функции rand().
- Вывод значений матрицы на экран.
- Сортировка каждой строки матрицы в порядке убывания с помощью алгоритма сортировки пузырьком.
- Вывод отсортированной матрицы на экран.
- Завершение работы программы.