TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

[ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 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)
 
Номер теста
i
(1)
Массив А
1
3
2
1
+
+
+
-(кц)
(1, 3, 5)
(1, 3, 5, 5)
(1, 3, 3, 5)
(1, 1, 3, 5)
(0, 1, 3, 5)
2
3
2
+
-(кц)
(1, 3, 5)
(1, 3, 5, 5)
(1, 3, 4, 5)
3
3
-(кц)
(1, 3, 5)
(1, 3, 5, 6)
 
 Блок-схема (фрагмент) 
Turbo Pascal
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.
 

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz