Дана квадратная матрица. Сформировать одномерный массив, состоящий из элементов, расположенных ниже главной диагонали матрицы. Выполнить сортировку одномерного массива — Pascal(Паскаль)

uses
  crt;
 
const
  n = 6;
 
var
  b: array[1..n, 1..n] of integer;
  a: array[1..100] of integer;
  i, j, x, k: integer;
 
 
procedure Sort2;
var
  f: boolean;
begin
  repeat
    f := false;
    for i := 1 to k - 1 do
    begin
      if a[i] > a[i + 1] then
      begin
        f := true;
        x := a[i];
        a[i] := a[i + 1];
        a[i + 1] := x;
      end;
    end;
  until not f;
  for i := 1 to k do
    Write(a[i], '  ');
end;
 
begin
  ClrScr;
  Randomize;
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      b[i, j] := random(20) - 10;
      Write(b[i, j]:4);
    end;
    Writeln;
  end;
  Writeln;
  for i := 1 to n do
    for j := 1 to n do
      if i > j then
      begin
        inc(k);
        a[k] := b[i, j];
      end;
  Writeln('Massiv A: ');
  for i := 1 to k do
    Write(a[i], '  ');
  Readln;
  
  Sort2;
  Readln;
end.

Следующий вариант

uses
  crt;
 
const
  n = 6;
 
var
  b: array[1..n, 1..n] of integer;
  a: array[1..100] of integer;
  i, j, x, k: integer;
 
procedure Sort1;
var
  imin, j, x: integer;
begin
  for i := 1 to k - 1 do
  begin
    imin := i;
    for j := i + 1 to k do
      if a[j] < a[imin] then
        imin := j;
    if imin <> i then
    begin
      x := a[i];
      a[i] := a[imin];
      a[imin] := x;
    end;
  end;
  for i := 1 to k do
    Write(a[i], '  ');
end;
 
begin
  ClrScr;
  Randomize;
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      b[i, j] := random(20) - 10;
      Write(b[i, j]:4);
    end;
    Writeln;
  end;
  Writeln;
  for i := 1 to n do
    for j := 1 to n do
      if i > j then
      begin
        inc(k);
        a[k] := b[i, j];
      end;
  Writeln('Massiv A: ');
  for i := 1 to k do
    Write(a[i], '  ');
  Readln;
  sort1;
  Readln;
end.

Leave a Comment

90 − 80 =