Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.04.2014, 16:37
xxxmaximal xxxmaximal вне форума
Прохожий
 
Регистрация: 24.03.2014
Сообщения: 10
Версия Delphi: delphi 7
Репутация: 10
По умолчанию Подскажите что не так

Дан массив х, элементы которого упорядочены по возрастанию. Для элемента р методом бинарного поиска проверить: если р входит в массив х, то 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.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:06.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025