Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизEAccessViolation в алгоритме поиска... Найти похожие ветки
← →
Rradion (2003-10-28 12:56) [0]Такая проблемка - надо написать простенький алгоритм поиска в массиве.
1. Большими шагами ( по 10 ) переходим через ключ.
2. От места остановки перебираем массив к 0, до обнаружение ключа.
3. Если ключ не обнаружен, перебираем от места остановки до конца массиве, если находим, значит массив был не упорядочен.
4. Если не находим, значит ключа в массиве нет.
Написал код, а он мне выдает EAccessViolation ( на строчку, что болдам ), типа выход за границы массиве...
Спасибо!
procedure TForm1.Button4Click(Sender: TObject);
begin
i:=0;
nashel:=1; // 1- ischim ; 2- nashli ; 3- nashli v neotsort. ; 0- ne nashli
while MASS[i] < StrToInt(Edit2.Text) do i:=i+10; /// pereshli cherez kljuch
j:=i;
while ( MASS[j] <> StrToInt(Edit2.Text) ) or ( j<>0 ) do j:=j-1; /// poshli of j k 0 /// Tut on i daet EAccessViolation...
If MASS[j] = StrToInt(Edit2.Text) then nashel:=2; /// esli nashli kljuch, to nashli:=2
If j = 0 then /// esli ne nashli...
begin
j:=i;
while MASS[j] <> (StrToInt(Edit2.Text)) or MASS[N] do j:=j+1; /// ...to idjom or j k N
If MASS[j] = StrToInt(Edit2.Text) then nashel:=3; /// esli nashli kljuch, to nashli:=3
If (MASS[j] = MASS[N]) and (MASS[N]<>StrToInt(Edit2.Text)) then nashel:=0; /// esli tak i ne nashli, to nashli:=0
end;
if nashel=0 then
MessageDlg( "Not Found!" , mtinformation , [mbOK], 5 ); // ne naiden
if nashel<>0 then ListBox1.ItemIndex:=i-1; // esli naiden, pokazivaem v LB1.
if nashel=2 then
MessageDlg( "Found in Sorted Mass, at "+IntToStr(i) , mtinformation , [mbOK], 5 ); // naiden
if nashel=2 then
MessageDlg( "Found in Unsorted Mass, at "+IntToStr(i) , mtinformation , [mbOK], 5 ); // naiden
end;
← →
Sandman25 (2003-10-28 13:26) [1]Edit2Text := StrToInt(Edit2.Text);
while (j > 0) do
if MASS[j] = Edit2Text) then
break
else
dec(j);
← →
default (2003-10-28 13:29) [2]код Pos-а можешь взять(если только допустим массив символов)
← →
Rradion (2003-10-28 14:05) [3]Pochenil, Spasibo Sandman!
procedure TForm1.Button4Click(Sender: TObject);
begin
i:=0; Kluch:= StrToInt( Edit2.Text );
nashel:=1; // 1- ischim ; 2- nashli ; 3- nashli v neotsort. ; 0- ne nashli
while MASS[i] < Kluch do i:=i+10; /// pereshli cherez kljuch
j:=i;
while j > 0 do if MASS[j] = Kluch then
begin
nashel:=2; /// esli nashli kljuch, to nashli:=2
break
end
else j:=j-1; /// poshli of j k 0
If j = 0 then /// esli ne nashli...
begin
j:=i;
while j < N do if MASS[j] = Kluch then
begin
nashel:=3; /// esli nashli kljuch, to nashli:=3
break
end
else j:=j+1; /// poshli ot j k N
end;
If (j=N) and (MASS[N]<>Kluch) then nashel:=0;
if nashel=0 then
MessageDlg( "Not Found!" , mtinformation , [mbOK], 5 ); // ne naiden
if ( nashel=2 ) or ( nashel=3 ) then ListBox1.ItemIndex:=j; // esli naiden, pokazivaem v LB1.
if nashel=2 then
MessageDlg( "Found in Sorted Mass, at "+IntToStr(j+1), mtinformation , [mbOK], 5 ); // naiden
if nashel=3 then
MessageDlg( "Found in Unsorted Mass, at "+IntToStr(j+1), mtinformation , [mbOK], 5 ); // naiden
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.04 c