Главная страница
    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.045 c
1-41141
minimax
2003-11-03 14:07
2003.11.13
нужен компонент


1-41160
Stratos
2003-11-01 02:48
2003.11.13
битовые поля в записях


1-41589
VaZa
2003-10-24 23:24
2003.11.13
Список установленых программ


1-41470
Sirus
2003-10-29 07:16
2003.11.13
Нужно установить вручную Flash Player (неважно какой)???


1-41393
loki128
2003-10-29 08:42
2003.11.13
Окна





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский