Poni┐sze algorytmy wyszukiwania powinny dzia│aµ zar≤wno
w Delphi jak i z drobn▒ modyfikacj▒ w Pascal'u.
Pierwszy algorytm wyszukiwania polega na wyszukiwaniu
warto╢ci w tablicy. Za│≤┐my, ┐e masz tablicΩ 10-elementow▒ typu
String i chcesz w tej tablicy wyszukaµ jaki╢ element ( poznaµ jej
indeks ). Oto procedura przeszukuj▒ca:
type
TSearch = String; // nowy typ bazujacy na typie String
TTable = array[0..10] of TSearch;
function Find(Table : TTable; Data : TSearch; var Found : Integer) : Integer;
begin
{
Ta procedura porownuje szukany element ( Data ) z kazdym elementem
tablicy. Jezeli procedura znajdzie w tablicy element Data to zwraca
rezultad w postaci numeru elementu.
}
Found := 0;
while (Found < High(Table)) and (Table[Found] <> Data) do Inc(Found);
if Table[Found] <> Data then
Result := -1 else Result := Found;
end;
Oto procedura wykorzystuj▒ca powy┐szy algorytm:
procedure TForm1.Button2Click(Sender: TObject);
var
Tablica : TTable;
Found : Integer;
begin
{ Wypelnienie tabliocy wartosciami }
Tablica[0] := 'Jan';
Tablica[1] := 'Adam';
Tablica[2] := 'Aneta';
Tablica[3] := 'Sylwia';
Tablica[4] := 'Marta';
Tablica[5] := 'Monika';
Tablica[6] := 'Agata';
Tablica[7] := 'Ewelina';
Tablica[8] := 'Joanna';
Tablica[9] := 'Krzysiek';
Tablica[10] := 'Adrian';
if Find(Tablica, 'Aneta', Found) > 0 then
ShowMessage('Znelziono pod indeksem: ' + IntToStr(Found));
end;
A oto inny spos≤b zapisu tej procedury ( wyszukiwania
):
function Find(Table : TTable; Data : TSearch; var Found : Integer) : Integer;
begin
Found := 0;
repeat
Inc(Found);
until Table[Found] = Data;
if Table[Found] <> Data then Result := -1 else Result := Found;
end;
Adam Boduch