Сортировка строк матрицы по возрастанию - C (СИ)
Формулировка задачи:
Здравствуйте. Помогите, пожалуйста, исправить код. Дан двумерный массив (N=4, M=6). Отсортировать его строки по возрастанию. У меня происходит сортировка,но не всех значений.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
#define N 4
#define M 6
int main()
{
int a[N][M],i,j,c;
time_t t;
clrscr();
srand(time(&t));
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
a[i][j]=0+rand()%100;
printf("%d ",a[i][j]);
}
printf("\n");
}
for(i=0;i<N;i++)
{
for(j=0;j<M-1;j++)
{
if(a[i][j]>a[i][j+1])
{
c=a[i][j];
a[i][j]=a[i][j+1];
a[i][j+1]=c;
}
}
}
printf("\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
getch();
return 0;
}Решение задачи: «Сортировка строк матрицы по возрастанию»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main()
{
const unsigned int sizeMatrix = 10;
int matrix[sizeMatrix][sizeMatrix], tmp = 0;
for (size_t i = 0; i < sizeMatrix; ++i)
for (size_t j = 0; j < sizeMatrix; ++j)
matrix[i][j] = rand() % 10;
for (size_t i = 0; i < sizeMatrix; ++i)
for (size_t j = 0; j < sizeMatrix - 1; ++j)
for (size_t k = 0; k < sizeMatrix - 1; ++k)
if (matrix[i][k + 1] < matrix[i][k]) {
tmp = matrix[i][k + 1];
matrix[i][k + 1] = matrix[i][k];
}
for (size_t i = 0; i < sizeMatrix; ++i) {
for (size_t j = 0; j < sizeMatrix; ++j) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек: iostream.h и stdlib.h
- Объявление константы размера матрицы: sizeMatrix = 10
- Создание двумерного массива типа int: matrix[sizeMatrix][sizeMatrix]
- Инициализация матрицы случайными числами от 0 до 9 с помощью функции rand()
- Прямой проход по матрице для сравнения элементов
- Сравнение элементов матрицы и перестановка их в нужном порядке
- Вывод отсортированной матрицы на экран с помощью функции printf()
- Возвращение значения 0, сигнализирующего о успешном завершении программы