AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem bei einem Sortierverfahren

Ein Thema von Helios · begonnen am 4. Apr 2003 · letzter Beitrag vom 5. Apr 2003
Antwort Antwort
Seite 1 von 2  1 2      
Helios

Registriert seit: 4. Apr 2003
7 Beiträge
 
#1

Problem bei einem Sortierverfahren

  Alt 4. Apr 2003, 18:24
Ich programmiere gerade mit Delphi ein paar unterschiedliche Sortierverfahren. Ich bin zur Zeit noch beim ausprobieren, aber bei einem Verfahren komme ich einfach nicht weiter. Eigentlich ist es fertig, aber wenn ich es benutze, stürzt das programm immer ab. Hier der Quellcode:

Delphi-Quellcode:
procedure TForm1.Sortierverfahren4Click(Sender: TObject);
var
 n: integer;
 procedure Quicksort(links,rechts:integer);
 var
  el,er,grenze: integer;
  hilfe:string;
 begin
   el := links; er:=rechts; grenze := strtoint(ListeSortiert.Items.Strings[links]);

   repeat
      while strtoint(ListeSortiert.Items.Strings[el])<grenze do el:=el+1;
      while strtoint(ListeSortiert.Items.Strings[er])<grenze do er:=er-1;
      if(el <> er) then begin
        hilfe := ListeSortiert.Items.Strings[el];
        ListeSortiert.Items.Strings[el] := ListeSortiert.Items.Strings[er];
        ListeSortiert.Items.Strings[er] := hilfe;
      end;
   until el>er;
   if (er > links) then QuickSort(links,er);
   if (el < rechts) then QuickSort(el,rechts);
 end;
Vielleicht kann mir jemand helfen. Die Dateien sind in einer Zip-Datei als Attachment hinzugefügt, falls jemand Interesse haben sollte den Fehler zu beheben.
Gruß
Helios
Angehängte Dateien
Dateityp: zip helios.zip (9,7 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 4. Apr 2003, 18:29
In der Tutorial-Sparte hat Daniel ein paar Sortierverfahren besprochen. Da schon mal gekuckt?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#3
  Alt 4. Apr 2003, 18:55
Hallo und herzlich Willkommen im Forum!

Das problem ist folgende zeile:
until el>er; el wird nie höher und somit hast Du da eine Endlosschleife. Dein el wird nie erhöht. er ist ja 4 und el ist ja immer 1, kann also nicht gehen.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Helios

Registriert seit: 4. Apr 2003
7 Beiträge
 
#4
  Alt 4. Apr 2003, 19:02
Danke für den Tipp. Aber ich weiß jetzt noch nicht, was ich ändern muss, damit "el" so erhöht wird, dass es funktioniert. Wäre gut wenn du vielleicht einen Lösungsvorschlag hast.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5
  Alt 4. Apr 2003, 19:05
Ich zitiere mich ungern selber:
Zitat:
In der Tutorial-Sparte hat Daniel ein paar Sortierverfahren besprochen. Da schon mal gekuckt?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#6
  Alt 4. Apr 2003, 19:05
Hallo,

nun, das einfachste wäre:
Delphi-Quellcode:
      Inc(el);
    until el>er;
So bleibt man wenisgtens nicht mehr hängen.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Helios

Registriert seit: 4. Apr 2003
7 Beiträge
 
#7
  Alt 4. Apr 2003, 19:24
@Luckie: Da hab ich eben mal geguckt. Nur sieht der Quellcode von dem Verfahren, an dem ich arbeite dort ganz anders aus. Ich kann zumindest nichts damit anfangen, weil ich noch nicht lange mit Delphi programmiere. Und diesen Quellcode, den ich hier habe, ist von meinem Informatiklehrer. Eigentlich sollte es funktionieren, aber mein Lehrer hat sich auch gewundert als es nicht ging. Und nun sollen wir zuhause versuchen das Problem zu lösen...
  Mit Zitat antworten Zitat
Helios

Registriert seit: 4. Apr 2003
7 Beiträge
 
#8
  Alt 4. Apr 2003, 19:49
Dein Tipp mit:
Delphi-Quellcode:
Inc(el);
until el>er;
hilft mir auch nicht weiter.
ich bin aber auf eine andere Idee gekommen. Es müsste doch eigentlich wie folgt sein:
Delphi-Quellcode:
el:=el+1;
er:=er-1;
until el>er;
Es funktioniert auch, fast zumindest. Wenn ich z.B. eine Liste mit 12 Zahlen nehme sind fast alle richtig sortiert. Meistens sind so ca. 10 von 12 Zahlen richtig sortiert. Aber warum werden nicht alle sortiert?
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#9
  Alt 4. Apr 2003, 19:52
Zitat von Helios:
Dein Tipp mit:
Delphi-Quellcode:
Inc(el);
until el>er;
hilft mir auch nicht weiter.
Und was meinst Du was
Inc(el) und Dec(er) macht??
Inc zählt die Varibale hoch, ist also das gleiche wie i := i +1; und Dec macht genau das Gegenteil, es zählt runter!

Grüsse, Daniel
  Mit Zitat antworten Zitat
Helios

Registriert seit: 4. Apr 2003
7 Beiträge
 
#10
  Alt 4. Apr 2003, 20:24
Ok, aber was kann ich nun mache, damit die Liste komplett sortiert wird. Damit die Liste komplett richtig sortiert wird muss ich das Verfahren mehrmals hintereinander anwenden...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz