Читайте также:
|
|
Program Problem5;
Описание массивов и переменных.
Процедура быстрой сортировки.
Begin
Создание двумерного массива с помощью функции случайных чисел и одновременное "растягивание" в одномерный массив, а также вывод полученной матрицы на экран.
Вызов процедуры быстрой сортировки и сортировка одномерного массива в порядке возрастания.
v:= 1; - счетчик столбцов матрицы, получаемой из отсортированного одномерного массива;
k:= 0; - счетчик элементов одномерного массива;
Repeat
if v mod 2 <> 0 then
for i:= 1 to n do
Begin
k:= k + 1;
a[i, v]:= b[k]
End
Else
for i:= n downto 1 do
Begin
k:= k + 1;
a[i, v]:= b[k]
end;
v:= v + 1
until v = m + 1;
Вывод массива на экран.
end.
Программа
Program Problem5;
Const
n = 5; m = 6;
Type
s = array [1..m] of integer; t = array [1..n] of s; f = array [1..n*m] of integer;
Var
a: t;
b: f;
i, j, k, v: integer;
{----------------------------------------------------------------------------------------}
Procedure create_two(n, m: integer; var a: t);
Var
i, j: integer;
Begin
writeln('Заданный двумерный массив целых чисел');
randomize;
for i:= 1 to n do
Begin
for j:= 1 to m do
Begin
a[i, j]:= random(201) - 100;
write(a[i, j]:6, ' ')
End;
writeln
End
End;
{----------------------------------------------------------------------------------------}
Procedure sprain(n, m: integer; a: t; var b: f);
Var
k, i, j: integer;
Begin
k:= 0;
for i:= 1 to n do
for j:= 1 to m do
Begin
k:= k + 1;
b[k]:= a[i, j]
End
End;
{----------------------------------------------------------------------------------------}
Procedure fast(q, p: integer; var b: f);
Var
s, l, r: integer;
Begin
l:= q; r:= p;
s:= b[l];
Repeat
while (b[r] >= s) and (l < r) do r:= r - 1;
b[l]:= b[r];
while (b[l] <= s) and (l < r) do l:= l + 1;
b[r]:= b[l]
until l = r;
b[l]:= s;
if q < l - 1 then fast(q, l - 1, b);
if l + 1 < p then fast(l + 1, p, b)
End;
{----------------------------------------------------------------------------------------}
Begin
create_two(n, m, a);
sprain(n, m, a, b);
fast(1, n*m, b);
for i:= 1 to n*m do write(b[i], ' '); writeln;
v:= 1; k:= 0;
Repeat
if v mod 2 <> 0 then
for i:= 1 to n do
Begin
k:= k + 1;
a[i, v]:= b[k]
End
Else
for i:= n downto 1 do
Begin
k:= k + 1;
a[i, v]:= b[k]
End;
v:= v + 1
until v = m + 1;
writeln('Массив расположения элементов по схеме');
for i:= 1 to n do
Begin
for j:= 1 to m do write(a[i, j]:6, ' '); writeln
End
end.
Дата добавления: 2015-07-11; просмотров: 66 | Нарушение авторских прав