program PascalGuru;
uses crt;
var
A: array [1 .. 100, 1 .. 100] of integer; { переменная массива }
i, j, m, n: integer; { переменные для циклов }
B: array [1 .. 100] of integer; { переменная массива }
mm, ii: integer;
swop: boolean;
{ ***sort*** }
procedure exchange(var A, B: integer); { процедура обмена переменных }
var
c: integer;
begin
c := A;
A := B;
B := c;
end; { конец процедуры обмена переменных }
{ -------------------------------------------- }
begin
write('M= ');
readln(m); { считываем размер массива }
write('N= ');
readln(n); { считываем размер массива }
writeln('Vvedite elementy massiva A (>10): ');
for i := 1 to m do
for j := 1 to n do
begin
write('A[', i, ',', j, ']=');
readln(A[i, j]);
end; { считываем элементы массива }
clrscr;
write('Vot vvedennyi vami massiv A: ');
for i := 1 to m do
begin
writeln;
for j := 1 to n do
write(A[i, j]:4, ' ');
end; { выводим массив на экран }
for j := 1 to n do { проходим по всем столбцам }
begin
mm := m; { задаём размер столбца временной переменной }
repeat { ---начало сортировки }
swop := false;
for i := 1 to mm - 1 do
if odd(j) then { если столбец нечётный }
begin
if A[i, j][i + 1, j] then { сортируем по убыванию }
begin
exchange(A[i, j], A[i + 1, j]);
swop := true;
end;
end
else { если столбец чётный }
begin
if A[i, j] > A[i + 1, j] then { сортируем по возрастанию }
begin
exchange(A[i, j], A[i + 1, j]);
swop := true;
end;
end;
mm := mm - 1;
until not swop; { ***конец сортировки }
end;
writeln;
writeln;
write('Vot otsortirovannyi massiv A: ');
for i := 1 to m do
begin
writeln;
for j := 1 to n do
write(A[i, j]:4, ' ');
end; { выводим массив }