Entwickler-Ecke
Algorithmen, Optimierung und Assembler - bubblesort hilfe
TheAxeEffect - Mi 13.06.07 17:57
Titel: bubblesort hilfe
hallo. kann mir jemand bei meinem unfertigen bubblesort algorithmus helfen?
habe folgendes problem: ich möchte die zufallszahlen im memo1.lines .... sortieren.
wenn ich auf button2(sortierbutton) klicke, meldet er mir: ..."is not a valid integer value"...lasse ich allerdings das a:=strtoint(memo1.lines[j])bla weg, und vergleiche memo1.lines[j] direkt mit memo1.lines[j+1](also die strings, nicht die zahlen), geht alles wunderbar..er sortiert mir dann halt "falsch" dh. "23" nach "3" weil ja "3" größer als "2" is usw...wandle ich die strings in ne zahl um gehts nich... hab keine ahnung was da los is. kann mir wer helfen?
hier der code(wie ich ihn optiemier weiß ich selber, is nur so nen "betatest" sozusagen):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button2Click(Sender: TObject); var i,j,a,b:integer;
begin
for i:=1 to memo1.lines.count do begin
for j:=1 to memo1.Lines.count do begin a:=strtoint(memo1.Lines[j]); b:=strtoint(memo1.Lines[j+1]); if a < b then begin memo1.Lines.exchange(j,(j+1)); |
Moderiert von
Gausi: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 13.06.2007 um 18:09
Narses - Mi 13.06.07 18:00
Moin und :welcome: im Forum!
Probier´s mal statt StrToInt()einfach mit StrToIntDef(,0)aus. ;)
cu
Narses
TheAxeEffect - Mi 13.06.07 18:07
wenn das so richtig is, wie du meinst, gehts nich^^:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button2Click(Sender: TObject); var i,j,a,b:integer;
begin
for i:=1 to memo1.lines.count do begin
for j:=1 to memo1.Lines.count do begin a:=strtointdef(memo1.Lines[j],0); b:=strtoint(memo1.Lines[j+1]); if a < b then begin memo1.Lines.exchange(j,(j+1)); |
ps: danke fürs willkommenheißen^^
Gausi - Mi 13.06.07 18:09
Hallo und :welcome: auch von mir!
Deine Schleife läuft falsch ;-) Die muss von 0 (es sei denn, du hast ne Überschrift-Zeile drin) bis Count-2 laufen (die letzte Zeile ist Count-1, und in der Schleife greifst du auf j+1 zu, daher noch eins weniger).
Zusätzlich musst du noch darauf achten, dass in allen Zeilen gültige Zahlen drin stehen - es passiert recht schnell, dass am Ende irgendwelche Leerzeilen stehen. Das mit dem StrToIntDef ist eine Möglichkeit, Fehler abzufangen. Aber du musst beide StrToInts ersetzen ;-)
TheAxeEffect - Mi 13.06.07 18:12
argh, ich depp^^
und ja: ich hab ne überschrift-zeile^^ dass memox.lines von 0-... gehen, weiß ich, aber danke, hätte mir sicher geholfen, wenn ichs nicht gewusst hätte^^
geht jetzt. eine frage noch: was bedeutet die '0' bei strtointdef(x,0)
ps: auch dir danke für die "gastfreundschaft"^^
Marc. - Mi 13.06.07 18:12
Probiers mal mit F1. ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!