Конспект лекций по программированию для начинающих. Гладков В.П. - 169 стр.

UptoLike

Составители: 

171
until (1<=n) and (n<=nn); { на отрезок от 1 до nn }
{ Вводим элементы массива }
for i:=1 to n do
begin write('Введите элемент массива B[',i:2,']=');
readln(b[i])
end;
write('Введите искомый элемент ');
readln(a);
i:=1; { начинаем просмотр с первого элемента }
f:=false; { пока не найдено }
while (i<=n) and not f do
{ просматриваем массив, пока есть элементы и не найден искомый }
if b[i]=a { если совпали, }
then f:=true { то нашли, }
else i:=i+1; { иначе перейти к следующему элементу }
if f { вывод результатов поиска }
then write('Номер найденного
элемента ',i)
else write('Не нашли')
end.
Тестирование.
Тест 1. n=8, B[1]=2, B[2]=8, B[3]=3, B[4]=1, B[5]=9, B[6]=2, B[7]=2, B[8]=2, a=5.
Результат поиска: «Не нашли».
Тест 2. n=7, B[1]=2, B[2]=8, B[3]=3, B[4]=1, B[5]=9, B[6]=8, B[7]=2, a=8.
Результат поиска: «Номер найденного элемента 2».
Вариант 2 (линейный поиск с барьером). В этом варианте программы
применяется широко распространенный прием фиктивного элемента, или барьера,
расположенного в конце массива. Использование барьера позволяет упростить
условие окончания цикла, т.к. заранее ясно, что хотя бы один элемент, равный а, в
массиве есть.
program POISK1;
{ поиск с барьером в одномерном массиве }
const nn=12; { константа задает максимальный размер массива }
type mas1=array[1..nn] of integer; { тип
массива }
var b : mas1; { исходный массив }
n : integer; { размер массива }
a : integer; { число для поиска }
i : integer; { индекс массива }
begin
write('Введите размер массива от 1 до ',nn-1);
repeat { вводим n до тех пор, }
readln(n); { пока оно не попадет }
until (1<=n) and (n<=nn); { на отрезок от 1 до nn-1 }
{ Вводим элементы массива }
for i:=1 to n do
begin
write('Введите элемент массива B[',i:2,']=');
                                        171

      until (1<=n) and (n<=nn); { на отрезок от 1 до nn }
      { Вводим элементы массива }
      for i:=1 to n do
      begin write('Введите элемент массива B[',i:2,']=');
              readln(b[i])
      end;
      write('Введите искомый элемент ');
      readln(a);
      i:=1; { начинаем просмотр с первого элемента }
      f:=false; { пока не найдено }
      while (i<=n) and not f do
      { просматриваем массив, пока есть элементы и не найден искомый }
              if b[i]=a { если совпали, }
              then f:=true { то нашли, }
              else i:=i+1; { иначе перейти к следующему элементу }
      if f { вывод результатов поиска }
      then write('Номер найденного элемента ',i)
      else write('Не нашли')
   end.
   Тестирование.
   Тест 1. n=8, B[1]=2, B[2]=8, B[3]=3, B[4]=1, B[5]=9, B[6]=2, B[7]=2, B[8]=2, a=5.
Результат поиска: «Не нашли».
   Тест 2. n=7, B[1]=2, B[2]=8, B[3]=3, B[4]=1, B[5]=9, B[6]=8, B[7]=2, a=8.
Результат поиска: «Номер найденного элемента 2».
   Вариант 2 (линейный поиск с барьером). В этом варианте программы
применяется широко распространенный прием фиктивного элемента, или барьера,
расположенного в конце массива. Использование барьера позволяет упростить
условие окончания цикла, т.к. заранее ясно, что хотя бы один элемент, равный а, в
массиве есть.
   program POISK1;
   { поиск с барьером в одномерном массиве }
   const nn=12; { константа задает максимальный размер массива }
   type mas1=array[1..nn] of integer; { тип массива }
   var        b : mas1; { исходный массив }
              n : integer; { размер массива }
              a : integer; { число для поиска }
              i : integer; { индекс массива }
   begin
      write('Введите размер массива от 1 до ',nn-1);
      repeat { вводим n до тех пор, }
              readln(n); { пока оно не попадет }
      until (1<=n) and (n<=nn); { на отрезок от 1 до nn-1 }
      { Вводим элементы массива }
      for i:=1 to n do
      begin
              write('Введите элемент массива B[',i:2,']=');