Задана матрица NxM, где 1 меньше n. Упорядочить элементы каждого нечетного столбца по убыванию, четного - по возрастанию

code: #pascal
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;  {выводим массив}
 
 
 
readln;
end.      
Поделиться:

Похожие статьи: