| Autor |
Beitrag |
Flyx
Hält's aus hier
Beiträge: 2
|
Verfasst: Mo 10.10.11 18:47
Hallo,
ich möchte gerne eine Datei, die aus Wörtern besteht, mit dem Bubblesort sortieren. Ich öffne sie mit Opendialog und will
die sortierten Daten in ein Memo einfügen. Doch ich habe bis jetzt nur sehr wenige Programmiererfahrungen gemacht und bin mir
nicht sicher, wie ich es anstellen soll. Ich habe einen Quellcode geschrieben, der nun leider nicht funktioniert. Vielleicht kann mir jemand helfen und mir die Fehler im Programm zeigen und berichtigen?
Vielen Dank im Voraus
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: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61:
| unit Bubblesort;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls;
type TForm1 = class(TForm) Button1: TButton; OpenDialog1: TOpenDialog; Button2: TButton; Edit1: TEdit; Memo1: TMemo; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject);
private public end;
var Form1: TForm1; Daten: array of string;
implementation
{$R *.DFM}
procedure TForm1.Button2Click(Sender: TObject); begin Opendialog1.execute; edit1.text:=opendialog1.filename; end;
procedure Bubblesort; var i,j:integer; speicher:string; begin for i:=0 to length(daten)-1 do for j:=i+1 to length(daten) do if Daten[i]>Daten[j] then begin speicher:=Daten[j]; Daten[j]:=Daten[i]; Daten[i]:=speicher; end; end;
procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin bubblesort; for i:=0 to length(daten)-1 do begin memo1.lines.add(daten[i]); end;
end;
end. |
Moderiert von Gausi: Delphi-Tags hinzugefügt
|
|
Gausi
      
Beiträge: 8553
Erhaltene Danke: 479
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mo 10.10.11 18:55
Hallo und  in der Entwickler-Ecke,
Delphi-Quelltext 1: 2:
| for i:=0 to length(daten)-1 do for j:=i+1 to length(daten) do |
Ein Array geht von 0 bis Length-1. 
_________________ We are, we were and will not be.
|
|
Flyx 
Hält's aus hier
Beiträge: 2
|
Verfasst: Mo 10.10.11 19:04
Das heißt, es müssten beide Male length-1 stehen?
Aber es funktioniert immer noch nicht...
|
|
Gausi
      
Beiträge: 8553
Erhaltene Danke: 479
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mo 10.10.11 19:17
Laufen müsste es jetzt aber, d.h. der Compiler zeigt keinen Fehler mehr an, und das Programm stürzt nicht ab, oder?
Sortieren müsste der Algorithmus auch. Das ist zwar kein Bubblesort, aber wenn ich das richtig überblicke, sollte das Verfahren hier auch funktionieren.
_________________ We are, we were and will not be.
|
|
bole
      
Beiträge: 107
Erhaltene Danke: 15
win 10
|
Verfasst: Mo 10.10.11 19:52
Das nix passiert liegt wahrscheinlich auch darn das Du die Daten aus dem File nicht in dein Array ladest. Du ruft zwar den Open Dialog auf, aber schreibst den Datenamen nur in ein Edit...
Gruss
Bole
_________________ ein programm macht nicht das was du willst sondern was du schreibst!
|
|
Delphi-Laie
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Fr 14.10.11 13:04
Gausi hat folgendes geschrieben : | | Das ist zwar kein Bubblesort, aber wenn ich das richtig überblicke, sollte das Verfahren hier auch funktionieren. |
Welcher Sortieralgorithmus ist es denn dann?
Ich könnte fast schwören, daß es sich hierbei um Bubblesort handelt.
|
|
Oliver Marx
      
Beiträge: 80
Erhaltene Danke: 18
Win 7 Prof.
Delphi XE Prof.
|
Verfasst: Fr 14.10.11 13:22
Hi,
Bubblesort kann es nicht sein, da bei Bubblesort immer benachbarte Daten verglichen werden. In diesem Fall handelt es sich um eine Art von Minsort. Allerdings wird beim echten Minsort bei jedem Hauptschleifendurchlauf maximal einmal getauscht.
Viele Grüße
Oliver
Für diesen Beitrag haben gedankt: Delphi-Laie
|
|
Delphi-Laie
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Fr 14.10.11 13:31
Moderiert von Narses: Komplett-Zitat des letzten Beitrags entfernt.
Ach so, das übersah ich, danke! Ein Glück, daß ich nicht vereidigt wurde.
Dann ist es eine Form des Simple-/Naiselsorts, wie sie auf sortieralgorithmen.de (und auch in meinem Sortierkino) enthalten ist.
|
|