![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Дан массив х, элементы которого упорядочены по возрастанию. Для элемента р методом бинарного поиска проверить: если р входит в массив х, то found присвоить TRUE, а переменной к-номер элемента массива х, равного р; если р не входит в массив х, то found присвоить FALSE, а элемент р вставить в массив х, не нарушая порядок возрастания.
Код:
procedure TForm1.Button1Click(Sender: TObject); var x:array of integer; p:integer; found:boolean; nz,vh,k:integer; i,n:integer; begin n:=memo1.lines.count; SetLength(x,n); for i:=0 to n-1 do x[i]:=strtoint(memo1.Lines[i]); p:=strtoint(edit1.Text); nz:=1; vh:=n-1; found:=false; while (nz<=vh) and (not found) do begin i:=(nz+vh) div 2; if x[i]=p then begin found:=true; k:=i; edit2.text:=inttostr(k); end else if x[i]<p then nz:=i+1 else vh:=i-1; end; for i:=n downto vh do x[i+1]:=x[i]; x[nz]:=p; for i:=0 to n do memo2.Lines.add(inttostr(x[i])); end; end. Последний раз редактировалось xxxmaximal, 20.04.2014 в 19:22. |
#2
|
||||
|
||||
![]() Должна быть ошибка, поскольку массиву размерность не задана изначально, не хватает SetLength(a, n) перед загрузкой из мемо
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
xxxmaximal (21.04.2014)
|
#3
|
|||
|
|||
![]() спасибо , заработало
|