Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.029 c
1-41310
Zeus
2003-10-31 10:29
2003.11.13
Как найти разницу


1-41654
Dimaz-z
2003-10-25 17:04
2003.11.13
Народ, помогите, голова не варит!


3-40845
Denisiy
2003-10-21 16:16
2003.11.13
Как передать в переменную резльтат запроса от Query?


1-41652
snlnik
2003-10-19 20:10
2003.11.13
проверка существования ключа в реестре


3-40943
Василиск
2003-10-17 13:41
2003.11.13
Что лучше, создавать TStoredProc в runtime или или в design time?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский