Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Метод сортировки: просеивание.

Автор: Анжелика 19.12.2005 1:47

Ребят, я нашла способ сортировки методом просеивания, но только для столбцов. Помогите мне исправить программу, чтобы она сортировала числа в строках матрицы. Спасибо.

const
n = 4;
m = 4;
type
matrix = Array[1 .. n, 1 .. m] Of Integer;


Procedure Insert(Var ar: matrix; currCol: Integer; n: Integer);
Var i, j, T: Integer;
Begin
For i := 1 To n do
Begin
T := ar[i, currcol];
j := Pred(i);
While (T < ar[j, currcol]) and (j >= 0) Do
Begin
ar[Succ(j), currcol] := ar[j, currcol]; Dec(j);
End;
ar[Succ(j), currcol] := T;
End;
End;

const
a: matrix =
((10, 9, 8, 7),
( 6, 5, 4, 3),
(11, 12, 14, 16),
(34, 23, 81, 11));
var
i, j: integer;
begin
For i := 1 to m do
Insert(a, i, n);
for i := 1 to n do
begin
for j := 1 to m do
write(a[i, j]:5);
writeln
end;
end.

Автор: Анжелика 19.12.2005 4:05

ребят, ну помогите, пожалуйста.

Автор: volvo 19.12.2005 6:07

Вот так:

const
n = 4;
m = 4;

Type
arrType = Array[1 .. n] Of Integer;
matrix = Array[1 .. m] Of ArrType;

Procedure Insert(Var ar: arrType; n: Integer);
Var i, j, T: Integer;
Begin
For i := 1 To n do
Begin
T := ar[i];
j := Pred(i);
While (T < ar[j]) and (j > 0) Do
Begin
ar[Succ(j)] := ar[j]; Dec(j);
End;
ar[Succ(j)] := T;
End;
End;

const
a: matrix =
((10, 9, 8, 7),
( 6, 5, 4, 3),
(11, 12, 14, 16),
(34, 23, 81, 11));

var
i, j: integer;

begin
For i := 1 to m do
Insert(a[i], n);

For i := 1 To m Do Begin
For j := 1 To n Do
Write(a[i][j]:5);
WriteLn
End;

End.