Пример 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)
Демонстрация
Школьный АЯ
алг Включение (арг цел N, арг вещ D, арг рез вещ таб A[1:N+1])
дано | А - упорядоченная по возрастанию последовательность
надо | в А включено число D с сохранением упорядоченности
нач цел i
i:=N
нц пока(i>=1) и (A[i]>D)
A[i+1] := A[i] | сдвиг очередного элемента вправо на одну позицию
i := i-1
кц
A[i+1] := D | включение числа D в последовательность
кон
Исполнение алгоритма
Обозначение проверяемого условия: (i >= 1) и (A[i] > D) => (1)
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.