Задана матрица NxM, где 1 меньше n. Упорядочить элементы каждого нечетного столбца по убыванию, четного — по возрастанию — 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; { выводим массив }

Leave a Comment

22 − = 12