Пользователь

Добро пожаловать,

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

Меню сайта




Ваше мнение
Как вы оцените наш сайт?

Замечательный
Хороший
Обычный
Плохой
Отвратительный


Результаты
Другие опросы

Всего голосов: 847
Комментарии: 10


Наши партнеры



Статистика




Programming books  Download software  Documentation  Scripts  Content Managment Systems(CMS)  Templates  Icon Sets  Articles  Contacts  Voting  Site Search




Книги-online



Практикум — Глава 4. Алгоритмы, реализуемые с помощью циклов типа ПОКА
[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

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

QBasic

CLS
INPUT "Количество элементов массива – ", N
DIM A(N+1)
PRINT "Введите элементы массива, упорядоченные по возрастанию:"
FOR i = 1 TO N
  PRINT "A(" ; i ; ") = " ; :     INPUT A(i)
NEXT i :   PRINT
INPUT "Введите число, которое требуется включить в массив: ", D
CLS : PRINT "Исходный массив – ";
FOR i = 1 TO N
  PRINT A(i) ;
NEXT i :  PRINT
PRINT "Включаемый элемент – "; D
i = N
WHILE i >= 1 AND A[i]>D
  A(i+1) = A[i] : i = i – 1    'сдвиг очередного элемента вправо
WEND
A(i+1) = D  ’включение числа D в последовательность
PRINT : PRINT "О т в е т : массив с включенным элементом ";
FOR i = 1 TO N + 1
  PRINT A(i) ;
NEXT i : PRINT
END

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


Внимание! Если у вас не получилось найти нужную информацию, используйте рубрикатор или воспользуйтесь поиском


.



книги по программированию исходники компоненты шаблоны сайтов C++ PHP Delphi скачать