[Delphi] Quicksort - BetaTester (kein Delphi installed)

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von bonsai, 5. Mai 2008 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 5. Mai 2008
    Quicksort - BetaTester (kein Delphi installed)

    Jo, schönen guten Abend ^^

    Also ich soll grad für nen Kumpel mit delphi Quicksort proggen. Da ich aber nur C++ proggen kann, hab ich mir das ganze nach bestem Wissen einiger Foren (^^) zamgesucht. -.-

    So, ich als totaler Delphi-Synthax noob, brauche nun mal bitte jemanden, der Delphi installed hat, und mir sagen kann, ob der shice nun Funktioniert. ^^

    ---

    Auf dem Formular gibts (laut meinem Kumpel ^^)
    - 10 edit-Felder (Eingabe: integer - max. 1 Ziffer)
    - 1 Button ("Sortieren!")
    - und ein Label für die Ausgabe

    Code:
    unit Unit1;
    
    / * interface
     *
     * uses
     * Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     * Dialogs, StdCtrls, Buttons; 
     */
     // brauch man das? - kenn ich von C++ nicht -.-
    
    type
     TArray = array[1..10] of integer;
    
    type
     TForm1 = class(TForm)
     procedure Button1Click(Sender: TObject);
     private
     { Private-Deklarationen }
     procedure FillArray(var Eingabe: TArray);
     procedure Swap(var Zahl1, Zahl2: integer);
     procedure QuickSort(var Eingabe: TArray; HighIndex: integer);
     public
     { Public-Deklarationen }
     end; 
    
    var
     Eingabe: TArray; 
    
    procedure TForm1.FillArray(var Eingabe: TArray);
     begin
     Eingabe[1] := edit1.text;
     Eingabe[2] := edit2.text;
     Eingabe[3] := edit3.text;
     Eingabe[4] := edit4.text;
     Eingabe[5] := edit5.text;
     Eingabe[6] := edit6.text;
     Eingabe[7] := edit7.text;
     Eingabe[8] := edit8.text;
     Eingabe[9] := edit9.text;
     Eingabe[10] := edit10.text;
     end; 
    
    procedure TForm1.Swap(var Zahl1, Zahl2: integer);
     var h: integer;
     begin
     h := Zahl1; // High Index
     Zahl1 := Zahl2; // High Index = Low Index
     Zahl2 := h; // Low Index = High Index
     end;
    
    procedure TForm1.QuickSort(var Eingabe: TArray; HighIndex: integer);
     procedure Sort(links, rechts: integer);
     var l, r, x: integer;
     begin
     l := links;
     r := rechts;
     x := Eingabe[(links + rechts) div 2];
     repeat
     while Eingabe[l] < x do inc(l);
     while Eingabe[r] > x do dec(r);
     if l <= r then
     begin
     Swap(Eingabe[l], Eingabe[r]);
     inc(l);
     dec(r);
     end;
     until l > r;
     if links < r then Sort(links, r);
     if l < rechts then Sort(l, rechts);
     end;
     begin
     Sort(1, HighIndex);
     end;
    
    
    procedure TForm1.Button1Click(Sender: TObject);
     var i: integer;
     begin
     QuickSort(Eingabe, Length(Eingabe));
     // wenn der shice fertig sortiert ist => anzeigen
     label1.text := '';
     for i := 1 to Length(Eingabe) do
     // label1.text .= Eingabe[i]; // geht das? Bei C++ wäre das "+=" - kP o.O
     // edit
     label1.text := label1.text + inttostr(Eingabe[i]); // oder so? ^^
     // edit-ende
     end;
    
    end.
    
    so... erstmal dürft ihr euch den Knüppel holen, und mich schlagen ^^
    - dann bitte in die Tasten hauen und meine Fehler ausbessern =)

    Falls jemand Delphi installed hat, bitte mal testen, oder halt nicht, wenn ihr wisst, dass es defintiv funzt.


    big THX schonmal
     
  2. 6. Mai 2008
    AW: Quicksort - BetaTester (kein Delphi installed)

    wäre ja bereit dazu, das eben zu compilen, aber pack ma alle nötigen dateien in nen archiv und lads hoch, bin grad echt zu faul, mir alles zusammen zu klicken...mfg coach
     
  3. 6. Mai 2008
    AW: Quicksort - BetaTester (kein Delphi installed)

    Das meiste ist richtig, hier Verbessert:
    Code:
    unit Unit1;
    
    interface
    
    //uses: sowas wie include in C++, nur hier als lieste und ohne Dateierweiterung
    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, StdCtrls;
    
    //typen definition
    type
     TArray = array[1..10] of Integer;
    
    type
     TForm1 = class(TForm)
     //Object Definitionen
     Edit1: TEdit;
     Edit2: TEdit;
     Edit3: TEdit;
     Edit4: TEdit;
     Edit5: TEdit;
     Edit6: TEdit;
     Edit7: TEdit;
     Edit8: TEdit;
     Edit9: TEdit;
     Edit10: TEdit;
     Button1: TButton;
     Label1: TLabel;
     //***
     procedure Button1Click(Sender: TObject);
     private
     { Private-Deklarationen }
     procedure FillArray(var Eingabe: TArray);
     procedure Swap(var Zahl1, Zahl2: Integer);
     procedure QuickSort(var Eingabe: TArray; HighIndex: integer);
     public
     { Public-Deklarationen }
     end;
    
    var
     Form1: TForm1;
     UserEingabe: TArray;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.FillArray(var Eingabe: TArray);
    begin
     // Array mit den Werten der Edit Felder füllen
     // Davor die Strings in Integers umwandeln
     Eingabe[1] := StrToInt(edit1.text);
     Eingabe[2] := StrToInt(edit2.text);
     Eingabe[3] := StrToInt(edit3.text);
     Eingabe[4] := StrToInt(edit4.text);
     Eingabe[5] := StrToInt(edit5.text);
     Eingabe[6] := StrToInt(edit6.text);
     Eingabe[7] := StrToInt(edit7.text);
     Eingabe[8] := StrToInt(edit8.text);
     Eingabe[9] := StrToInt(edit9.text);
     Eingabe[10] := StrToInt(edit10.text);
    end;
    
    procedure TForm1.Swap(var Zahl1, Zahl2: Integer);
     var h: integer;
    begin
     h := Zahl1; // High Index
     Zahl1 := Zahl2; // High Index = Low Index
     Zahl2 := h; // Low Index = High Index
    end;
    
    procedure TForm1.QuickSort(var Eingabe: TArray; HighIndex: integer);
     procedure Sort(links, rechts: integer);
     var l, r, x: integer;
     begin
     l := links;
     r := rechts;
     x := Eingabe[(links + rechts) div 2];
     repeat
     while Eingabe[l] < x do inc(l);
     while Eingabe[r] > x do dec(r);
     if l <= r then
     begin
     Swap(Eingabe[l], Eingabe[r]);
     inc(l);
     dec(r);
     end;
     until l > r;
     if links < r then Sort(links, r);
     if l < rechts then Sort(l, rechts);
     end;
    begin
     Sort(1, HighIndex);
    end;
    
    
    procedure TForm1.Button1Click(Sender: TObject);
     var I: integer;
    begin
     FillArray(UserEingabe); // Array Füllen
     QuickSort(UserEingabe,Length(UserEingabe)); // Array Sortieren
     Label1.Caption := '';
     for i:=1 to Length(UserEingabe) do
     Label1.Caption := Label1.Caption + #10 + #13 + IntToStr(UserEingabe[i]);
     //Die operationen += -= ... gibt es bei Pascal/Delphi nicht
     //"#10 + #13" Erzeugt einen Zeilenumbruch
    end;
    
    end.
    
    ->Zum Testen bzw Compilieren die folgende Objekte erstellen:
    ->Quellcode ersetzen
    ->Button mit dem OnClick ereigness Verknüpfen

    Mfg Rushh0ur
     
  4. 6. Mai 2008
    AW: Quicksort - BetaTester (kein Delphi installed)

    Alles klar - vielen Dank an dich Rushh0ur! BW ging natürlich raus!

    Wenn ich mir das jetzt so anschaue, merk ich erstmal, dass ich an ein paar Sachen garnicht gedacht hab... ^^

    Naja, ich werds meim Kumpel mal schicken, damit er es testen kann. Mit dem alten Source hatte er nur Probleme, was mich nich wundert, bei den ganzen Fehlern. =)

    ---

    *closed*
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.