Fastdesign
یک شنبه 24 مهر 1390, 11:00 صبح
سلام
آرایه ای و اندیس را با این مقدرا تعریف کرده ام :
A:Array[1..100] of Integer;
i:Integer;
حالا با این کدها می خوام به روش دودویی(Binary Search) در آرایه جستجو کنم :
procedure TForm1.Button1Click(Sender: TObject);
var
Num,Mid,Low,High:Integer;
begin
Num:=strtoint(Edit1.Text);
Low:=1;
High:=i;
while (Low<=High) do begin
Mid:=(Low+High) div 2;
if (Num=a[Mid]) then begin
Edit2.Text:=inttostr(Mid);
end
else if (Num>a[Mid]) then begin
Low:=Mid+1;
end
else if (Num<a[Mid]) then begin
High:=Mid-1;
end;
end;
Edit2.Text:=inttostr(Mid);
end;
نمی دونم چرا جواب نمیده!
در ضمن اعدادی که از ورودی میگره هم به صورت مرتب است و در یک ListBox قرار داده میشه
من می خوام زمانی که عمل جستجو صورت گرفت عدد مورد فوکوس بر روی عدد مورد نظر در ListBox قرار بگیره(یعنی می خوام عدد انتخاب بشه).
با چه خاصیتی در ListBox میشه این کار را انجام داد؟
دوستان اگه میشه لطف کنید این کدها را بررری کنید.
ممنونم
آرایه ای و اندیس را با این مقدرا تعریف کرده ام :
A:Array[1..100] of Integer;
i:Integer;
حالا با این کدها می خوام به روش دودویی(Binary Search) در آرایه جستجو کنم :
procedure TForm1.Button1Click(Sender: TObject);
var
Num,Mid,Low,High:Integer;
begin
Num:=strtoint(Edit1.Text);
Low:=1;
High:=i;
while (Low<=High) do begin
Mid:=(Low+High) div 2;
if (Num=a[Mid]) then begin
Edit2.Text:=inttostr(Mid);
end
else if (Num>a[Mid]) then begin
Low:=Mid+1;
end
else if (Num<a[Mid]) then begin
High:=Mid-1;
end;
end;
Edit2.Text:=inttostr(Mid);
end;
نمی دونم چرا جواب نمیده!
در ضمن اعدادی که از ورودی میگره هم به صورت مرتب است و در یک ListBox قرار داده میشه
من می خوام زمانی که عمل جستجو صورت گرفت عدد مورد فوکوس بر روی عدد مورد نظر در ListBox قرار بگیره(یعنی می خوام عدد انتخاب بشه).
با چه خاصیتی در ListBox میشه این کار را انجام داد؟
دوستان اگه میشه لطف کنید این کدها را بررری کنید.
ممنونم