program poisk1;
var
a:array[1..9] of integer; { массив целых }
obrazec:integer; { образец для поиска }
sred,verh,niz:integer; { номера среднего, верхнего и нижнего}
{ эл-тов массива}
naiden:boolean;{ признак совпадения с образцом }
n:integer; { счетчик сравнений с образцом }
i:integer;
begin
{ ввод 9 целых чисел }
writeln('Бинарный поиск в массиве.');
write('Введите 9 целых в одной строке через пробел ');
writeln('и нажмите <Enter>');
for i:=1 to 9 do read(a[i]);
{ здесь числа в массив введены }
writeln('Введите образец для поиска (целое число) ');
readln(obrazec);
{ бинарный поиск }
verh:=1;
niz:=9;
naiden:=FALSE;
n:=0;
writeln(' verh niz sred');
repeat
sred:=(niz-verh) div 2+verh;
writeln(verh:5,niz:5,sred:5);
n:=n+1;
if a[sred]=obrazec then naiden:=TRUE
else begin
if obrazec<a[sred]
then niz:=sred-1
else verh:=sred+1;
end;
until (verh>niz) or naiden;
if naiden
then write('Совпадение с элементом номер ',
sred,'. Выполнено ',n,' сравнений.')
else writeln('Образец в массиве не найден.');
readln;
end.