Entwickler-Ecke

Sonstiges (Delphi) - Problem Binäre Suche


hansebanger - So 05.07.09 16:50
Titel: Problem Binäre Suche
Hallo!!
Wir haben in unserem Informatik-Unterricht gerade das Thema Array. Das haben wir Namen, Vornamen, Alter, usw. von Schülern gefüllt, die wir dann alphabetisch sortiert haben. Jetzt sollen wir ein Suchprogramm erstellen, bei dem wir den Namen suchen können und uns dir restlichen Angaben liefert. Bis zum Sortieren bin ich gekommen.
Unser Lehrer hat uns so ein Blatt mit "Iterative und rekursrive Mglkeiten von Binäre Suche" gegeben, das aber nich funktioniert...

Könnte mir jemand mal ein Beispielprogramm bitte geben mit einem Array gefüllt mit Zahlen und mann kann dann sagen, wo die Zahl ist...wenns möglich ist, auch ein Suchprogramm für das Studentenprogramm...

MfG,
Hansebanger

P.S.: Hier die zwei SUchmöglichkeiten

Das wäre iterativ:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
function binsearch(k:integer):integer;
var m,l,r:integer;
begin
l:=1;
r:=10;
repeat
m:=(l+r)div 2;
if k< semester[i].name
then r:=m-1
else l:=m+1
until (k=semester[i].name or (l>r);
if k= semester[i].name
then binsearch:=m
else binsearch:=0
end;


und das rekursiv:
procedure binsearch (l,r,k:integer);
var m:integer;
begin
m:=(l+r) div 2;
if m=1 then label1.caption:='Ferdisch'
else
begin
if k < semester[i].name
then binsearch(l,m,k)
else if k>semester[i].name
then binsearch (m,r,k)
else label1.caption:='Fisch';
end;
end;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


elundril - So 05.07.09 16:57

hallo und :welcome: im DF!

Damit wir den Quelltext besser lesen können setz ihn bitte in die delphi-Tags ([delphi][/delphi]) und rück deinen code bitte schön ein.

danke ;)

lg elundril


Marc. - So 05.07.09 16:59

Beim nächsten Mal reicht beim Tippfehler in der Überschrift auch ein Thread [http://www.delphi-forum.de/viewtopic.php?t=93458]. Diesen kannst du nämlich noch immer über das Scheren-Symbol [http://www.delphi-forum.de/posting.php?mode=editpost&p=570173] im ersten Post korrigieren. ;)


martin300 - So 05.07.09 21:08

Hallo,

hier ein kleines Beispiel:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
procedure TForm5.Button1Click(Sender: TObject);
const
  Name : Array [0..2of String = ('Henkel','Meier','Braun');
  Vorname : Array [0..2of String  = ('Sophie','Peter','Manuel');
  Alter : Array [0..2of Integer = (10,13,12);
var
  i: Integer;
  str : String;
  NameSuche : String;
begin

  // Alle Daten ausgeben
  memo1.Lines.Add('Ausgabe der Daten:');
  for i := 0 to 2 do
  begin
    str := Name[i] + ' ' + Vorname[i] + ' ' + inttostr(Alter [i]);
    memo1.lines.add(str);
  end;

  // Daten von 'Peter' ausgeben
  NameSuche := 'Peter';
  str := '';

  for i := 0 to 2 do
  begin
    if Vorname[i] = NameSuche then
    begin
      str := Name[i] + ' ' + Vorname[i] + ' ' + inttostr(Alter [i]);
    end;
  end;

  // Ausgabe der Daten von 'Peter'
  memo1.Lines.Add('Ausgabe der Suche:');
  if str <> '' then
    memo1.Lines.Add(str);

end;


Es wäre interessant zu wissen, wie die Daten im Array gespeichert sind. memo1 ist die TMemo Komponente und dient zur Anzeige.


Niko S. - So 05.07.09 21:39

I-wie kommt mir das aus meinem Informatikunterricht bekannt vor "Wie geht das? Was steht da?".
Irgendwie haben alle Informatikkurse irgendwelche Probleme mit ihren Schülern.

Eine Array ist wie ein Container mit Schubladen.

Delphi-Quelltext
1:
Alter: array[0..2of Integer;                    

Wäre demnach eine Schublade mit 3 Fächern (Das 0te fach, das 1te und das 2te).
In jeder Schublade kannst du Ganzzahlen reintun.
Und auslesen geht das ganz einfach mit:

Delphi-Quelltext
1:
Showmessage(IntToStr(Alter[0]));                    

Wobei in den eckigen Klammern die Position der Schublade steht.