Добавить сортировку массива по возрастанию и убыванию - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Нужно прикрутить вывод на экран не только в порядке возрастания, но и в порядке убывания. Буду благодарен за любую помощь.

Решение задачи: «Добавить сортировку массива по возрастанию и убыванию»

textual
Листинг программы
uses crt;
const
  n = 10;
  m = 6;
 
var
  a: array [0..n+1] of integer;
  na: integer;
  b: array [0..m+1] of integer;
  nb: integer;
  c: array [1..m+n] of integer;
  i,ia,ib: integer;
begin
  writeln('Задача слияния двух отсортированных массивов в один отсортированный');
 
  a[1] := Random(10);
  for i:=2 to n do
    a[i] := a[i-1] + Random(10);
 
  b[1] := Random(10);
  for i:=2 to m do
    b[i] := b[i-1] + Random(10);
 
  write('Массив a: ');
  for i:=1 to n do
    write(a[i],' ');
  writeln;
  write('Массив b: ');
  for i:=1 to m do
    write(b[i],' ');
  writeln;
 
  a[n+1] := MaxInt;
  b[m+1] := MaxInt;
 
  ia := 1;
  ib := 1;
  for i:=1 to n+m do
    if a[ia]>b[ib] then
    begin
      c[i] := b[ib];
      ib := ib + 1;
    end
    else
    begin
      c[i] := a[ia];
      ia := ia + 1;
    end;
  writeln('Массив c - результат слияния по возрастанию: ');
  for i:=1 to n+m do
  write(c[i],' ');
  writeln;
 
  a[0] := -MaxInt;
  b[0] := -MaxInt;
 
  ia := n;
  ib := m;
  for i:=1 to n+m do
    if a[ia]<b[ib] then
    begin
      c[i] := b[ib];
      ib := ib - 1;
    end
    else
    begin
      c[i] := a[ia];
      ia := ia - 1;
    end;
  writeln('Массив c - результат слияния по убыванию: ');
  for i:=1 to n+m do
  write(c[i],' ');
end.

Объяснение кода листинга программы

  1. Создаются два массива a и b, оба размером n+1 и m+1 соответственно, и инициализируются случайными числами от 0 до 99.
  2. Выводится содержимое массивов a и b.
  3. В массиве a добавляется элемент MaxInt в позиции n+1, а в массиве b - в позиции m+1.
  4. Создаются два указателя ia и ib, указывающие на первые элементы массивов a и b.
  5. Запускается цикл, в котором происходит слияние элементов массивов a и b. Если текущий элемент из массива a больше текущего элемента из массива b, то он копируется в массив c. Указатель ia увеличивается на единицу, а указатель ib уменьшается на единицу. Если текущий элемент из массива a меньше текущего элемента из массива b, то он копируется в массив c. Указатель ia уменьшается на единицу, а указатель ib увеличивается на единицу.
  6. Выводится содержимое массива c.
  7. Код завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы