Pascal
а) реализовать любую сортировку однострочного массива. пользователь вводит кол-во элементов, а затем поэлементно заполняет массив. пример: 5, 1,78,9,5,4; ответ: 1,4,5.9.78
б) пользователь вводит два массива по аналогии с предыдущей . необходимо отсортировать оба и слить их, соблюдая сортировку. пример входных данных: 3, 1,78,9, 2, 5,4; ответ: 1,4,5.9.78

Neу4 Neу4    2   30.10.2019 12:25    0

Ответы
RPkhf RPkhf  02.09.2020 23:32

program a;

type

 Ta = array of Integer;

procedure Sort (var a: Ta);

var

 i, j, jmax, atmp: Integer;

begin

 for i := Low (a) to High (a) do begin

   jmax := i;

   for j := i + 1 to High (a) do begin

     if a [j] < a [jmax] then        // возрастание и убывание меняется знаком "<" или ">" в этом операторе

       jmax := j;

   end;

   atmp := a [i];

   a [i] := a [jmax];

   a [jmax] := atmp;

 end;

end;

var

 n, i: Integer;

 a: Ta;

begin

 Write ('Количество элементов: ');

 ReadLn (n);

 SetLength (a, n);

 for i := Low (a) to High (a) do

   Read (a [i]);

 Sort (a);

 for i := Low (a) to High (a) do

   Write (a [i], ' ');

 ReadLn;

 ReadLn;

end.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  

program b;

type

 Ta = array of Integer;

procedure Sort (var a: Ta);

var

 i, j, jmax, atmp: Integer;

begin

 for i := Low (a) to High (a) do begin

   jmax := i;

   for j := i + 1 to High (a) do begin

     if a [j] < a [jmax] then        // возрастание и убывание меняется знаком "<" или ">" в этом операторе

       jmax := j;

   end;

   atmp := a [i];

   a [i] := a [jmax];

   a [jmax] := atmp;

 end;

end;

procedure InArr (var a: Ta);

var

 i, n: Integer;

begin

 Write ('Количество элементов: ');

 ReadLn (n);

 SetLength (a, n);

 for i := Low (a) to High (a) do

   Read (a [i]);

end;

var

 n, i, l1, l2: Integer;

 a1, a2: Ta;

begin

 Write ('Первый массив.');

 InArr (a1);

 Write ('Второй массив.');

 InArr (a2);

 l1 := Length (a1);

 l2 := Length (a2);

 SetLength (a1, l1 + l2);

 for i := Low (a2) to High (a2) do

   a1 [i + l1] := a2 [i];

 Sort (a1);

 for i := Low (a1) to High (a1) do

   Write (a1 [i], ' ');

 ReadLn;

 ReadLn;

end.

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика