Выполнить переворот или сортировку массива с помощью процедур(pascal abc).

0 голосов
100 просмотров

Выполнить переворот или сортировку массива с помощью процедур(pascal abc).


Информатика (34 баллов) | 100 просмотров
0

Переворот - это транспонирование?

Дан 1 ответ
0 голосов
Правильный ответ

Const
  nm = 100;

type
  Mas = array[1..nm] of integer;

procedure Shell(var a: Mas; n: integer);
{ сортировка методом Шелла }
var
  i, j, step, t: integer;

begin
  step := n div 2;
  while step > 0 do
  begin
    for j := n - step downto 1 do
    begin
      i := j;
      while i <= n - step do <br>      begin
        if a[i] > a[i + step] then
        begin
          t := a[i];
          a[i] := a[i + 1];
          a[i + 1] := t
        end;
        i := i + step
      end
    end;
    step := step div 2
  end
end;

var
  x: Mas;
  i, n: integer;

begin
  Randomize;
  Write('Введите число элементов в массиве (1-100): ');
  Readln(n);
  Writeln('Исходный массив');
  for i := 1 to n do
  begin
    x[i] := Random(101) - 50;
    Write(x[i]:4)
  end;
  Shell(x, n);
  Writeln(#13#10, 'Отсортированный массив');
  for i := 1 to n do Write(x[i]:4)
end.

Тестовое решение:

Введите число элементов в массиве (1-100): 20
Исходный массив
  -8 -17 -19   1  -3  23 -33  30 -27 -45  12  26 -24  18  37   8  47 -14 -19  -3
Отсортированный массив
 -45 -33 -27 -24 -19 -19 -17 -14  -8  -3  -3   1   8  12  18  23  26  30  37  47


(142k баллов)