Autor Beitrag
Flyx
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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 :D

ausblenden volle Höhe 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:
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
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  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 user profile iconGausi: Delphi-Tags hinzugefügt
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8553
Erhaltene Danke: 479

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 10.10.11 18:55 
Hallo und :welcome: in der Entwickler-Ecke,

ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 10.10.11 19:04 
Das heißt, es müssten beide Male length-1 stehen?
Aber es funktioniert immer noch nicht...
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8553
Erhaltene Danke: 479

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 107
Erhaltene Danke: 15

win 10

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Fr 14.10.11 13:04 
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 80
Erhaltene Danke: 18

Win 7 Prof.
Delphi XE Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Fr 14.10.11 13:31 
Moderiert von user profile iconNarses: 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.