Здравствуйте. Помогите, пожалуйста, с задачей: Проверить упорядочены ли элементы столбцов матрицы. Если нет, то упорядочить их в порядке возрастания методом просеивания.
Вот я сделал ввод-вывод матрицы:
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
int main ()
{
int a[10][10];
int i, j, n, m, r, k, p;
printf ("Vvedite razmer matrici n=");
scanf ("%d", &n);
k=0;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
{
printf("a[%d][%d]=", i, j);
scanf("%d", &a[i][j]);
}
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
printf("%2d", a[i][j]);
printf("\n");
}
}
Проверку на упорядоченность я делаю так:
for (i = 0; i < n; i++) //просматриваем каждую строку и
// проверяем, упорядочена ли она
{
k = p = 0;
for (j = 0; j < n - 1; j++)
if (A[i][j] <= A[i][j + 1])
k++;//упорядочена ли по возрастанию
else
p++;// упорядочена ли по убыванию
if (k != n - 1 && p != n - 1) // если строка не упорядочена,
//то выполняем сортировку
Я нашёл сам метод просеивания для массива:
for (i=0;i<=n-2;i++)
if (A[i]>A[i+1])
{
r=A[i];
A[i]=A[i+1];
A[i+1]=r;
j=i;
while (A[j]<A[j-1]&&j>0)
{
r=A[j];
A[j]=A[j-1];
A[j-1]=r;
j=j-1;
}
}
Но как его сделать для матрицы?