{
Пример 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.