Включить заданное число D в массив A(N), упорядоченный по возрастанию, с сохранением упорядоченности — Pascal(Паскаль)

{
     Пример 4.5. Включить заданное число D в массив A(N), упорядоченный
                 по возрастанию, с сохранением упорядоченности.

                               Система тестов
          ╔═══════╤══════════════╤═════════════════╤═════════════╗
          ║ Номер │ Проверяемый  │      Данные     │             ║
          ║ теста │    случай    ├─────┬───────────┤  Результат  ║
          ║       │              │  D  │ Массив А  │             ║
          ╟───────┼──────────────┼─────┼───────────┼─────────────╢
          ║   1   │   D <= a1    │  0  │ A=(1,3,5) │ A=(0,1,3,5) ║
          ╟───────┼──────────────┼─────┼───────────┼─────────────╢
          ║   2   │ a1 < D <= aN │  4  │ A=(1,3,5) │ A=(1,3,4,5) ║
          ╟───────┼──────────────┼─────┼───────────┼─────────────╢
          ║   3   │   aN < D     │  6  │ A=(1,3,5) │ A=(1,3,5,6) ║
          ╚═══════╧══════════════╧═════╧═══════════╧═════════════╝
}
  Program Insertion;
    Uses Crt;
    Var A    : Array [1..20] of Real;
        D    : Real;
        N, i : Integer;
  {--------------------------------------------}
  Procedure InputOutput;  { описание процедуры ввода-вывода }
   Begin   ClrScr;
    Write('Количество элементов массива - ');       ReadLn(N);
    WriteLn('Введите элементы массива, упорядоченные по возрастанию:');
    For i := 1 to N do
      begin   Write('A[' , i , '] = '); ReadLn(A[i])
      end;    WriteLn;

    Write('Введите число, которое требуется включить в массив: ');
    ReadLn(D);

    ClrScr;   Write('Исходный массив :');
    For i := 1 to N do Write(A[i] : 5 : 1);  WriteLn;
    WriteLn('Включаемый элемент - ', D : 5 : 1);
   End;    { of InputOutput }
  {--------------------------------------------}
  Procedure Insert; { описание процедуры включения нового элемента }
   Begin
    i:=N;
    While (i>=1) and (A[i]>D) do
      begin A[i+1] := A[i];     { сдвиг очередного элемента вправо }
        i:=i-1;
      end;
    A[i+1] := D {включение числа D в последовательность}
   End;
  {--------------------------------------------}
  Procedure Result; { описание процедуры вывода результатов }
   Begin   WriteLn;
    Write('О т в е т : массив с включенным элементом ');
    For i := 1 to N+1 do Write( A[i] : 5 : 1);     WriteLn;
    ReadLn
   End;
  {--------------------------------------------}
  BEGIN
    InputOutput; { вызов процедуры ввода-вывода              }
    Insert;      { вызов процедуры включения нового элемента }
    Result;      { вызов процедуры вывода результатов        }
  END.

Leave a Comment

31 + = 37