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
Narses: 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
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..2] of String = ('Henkel','Meier','Braun'); Vorname : Array [0..2] of String = ('Sophie','Peter','Manuel'); Alter : Array [0..2] of Integer = (10,13,12); var i: Integer; str : String; NameSuche : String; begin
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;
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;
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..2] of 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!