![]() |
Buchstaben sortieren mit Bubble-Sort
Moin Leute,
ich stehe mal wieder vor einem Problem und ich komme nicht weiter! :wall:
Delphi-Quellcode:
Das sit der Quelltext. Unsere Aufgabe war es, Buchstaben alphabetisch zu sortieren. Nun eine kleine Erklärung zum Quelltext. Ich lese aus dem Edit1-Feld ein string ein. jeden einzelnen Buchstaben wandle ich in den Ascii-Code um, um ihn dann später mit Bubble-Sort zu sortieren. und aus dem Ascii-Code mache ich in der dritten Schleife wieder ein Wort! Aber wo ist bei mir der Fehler? Er macht alles ohne Probleme, bloß das sich Edit2 aus Edit1 am Ende ergibt:
function vertausche(a,b:integer):integer;
var hilf:integer; begin hilf:=a; a:=b; b:=hilf; end; procedure TForm1.Button1Click(Sender: TObject); var word1, word2 : string; var buchstabe:array [1..100] of integer; var anzahl,i,j,k,w:integer; begin word1:=edit1.text; word2:=edit1.text; anzahl:=length(word1); for i:=1 to anzahl do begin buchstabe[i]:=ord(word1[i]); end; // end of for-schleife for j:=anzahl downto 1 do begin for k:=1 to j do begin if (buchstabe[k-1]>buchstabe[k]) then vertausche(k-1, k); end; // end of for(k)-schleife end; // end of for(j)-schleife for w:=1 to anzahl do begin word2[w]:=chr(buchstabe[w]); end; edit2.text:=word2; end; |
Re: Buchstaben sortieren mit Bubble-Sort
Das liegt wohl an der Funktion vertauschen.
So sollte es gehen:
Delphi-Quellcode:
Solange a und b keine Referenzparameter sind, sondern nur Wertparameter, nutzen sie dir gar nichts, da nach dem Ende der Prozedur a und b aus dem Speicher entfernt werden. Mit Referenzparameter kann man aber Werte an Variablen übergeben.
procedure vertauschen(var a, b: Integer);//a,b müssen var-Parameter sein
var h: Integer; begin h:= a; a:= b; b:= h; end; [Edit] Die Zeile
Delphi-Quellcode:
müsste doch
if (buchstabe[k-1]>buchstabe[k]) then vertausche(k-1, k);
Delphi-Quellcode:
heißen, oder nicht?
if (buchstabe[k-1]>buchstabe[k]) then vertausche(buchstabe[k-1], buchstabe[k]);
[/Edit] MfG Binärbaum |
Re: Buchstaben sortieren mit Bubble-Sort
Danke, die Fehler sind mir jetzt erst bewusst geworden! :thumb:
|
Re: Buchstaben sortieren mit Bubble-Sort
Noch ein Tip: man könnte statt die Buchstaben in Integer-Werte umzuwandeln doch gleich die einzelnen Zeichen nehmen. Damit wird das Programm viel kürzer (und schneller):
Delphi-Quellcode:
(Ist wie immer ungetestet, aber sollte funktionieren.)
procedure vertauschen(var a, b: Char);//a,b müssen var-Parameter sein
var h: Char; begin h:= a; a:= b; b:= h; end; procedure TForm1.Button1Click(Sender: TObject); var word1, word2 : string; anzahl,j,k,w:integer; begin word1:=edit1.text; word2:=edit1.text; anzahl:=length(word1); for j:=anzahl downto 1 do begin for k:=1 to j do begin if (word2[k-1]>word2[k]) then vertausche(word2[k-1], word2[k]); end; // end of for(k)-schleife end; // end of for(j)-schleife edit2.text:=word2; end; MfG Binärbaum |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz