Delphi-PRAXiS
Seite 4 von 8   « Erste     234 56     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Sortieralgorithmen (https://www.delphipraxis.net/162274-sortieralgorithmen.html)

biby90 17. Aug 2011 13:26

AW: funktion erstellen... weiß nicht weiter
 
versuch ich später habe jetzt eine neue Aufgabe bekommen... naja nach BubbleSort kommt jetzt halt ShellSort^^

DeddyH 17. Aug 2011 13:29

AW: funktion erstellen... weiß nicht weiter
 
Da wirst Du aber auch vergleichen müssen ;)

biby90 17. Aug 2011 13:44

AW: funktion erstellen... weiß nicht weiter
 
jop ich weiß.... bin grad dabei das zu verstehen und selber hinzukriegen....
nur diese beispiele im internet sind echt blöd!

biby90 17. Aug 2011 15:55

AW: funktion erstellen... weiß nicht weiter
 
kann hier jemand den fehler entdecken?
Delphi-Quellcode:
unit sortierenShell;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    procedure ShellSort(CharTable: String);

    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  CharTable: array[0..51] of String =
    ('A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H',
      'h','I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o',
      'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v',
      'W', 'w', 'X', 'x', 'Y', 'y', 'Z', 'z');

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var
  i, j: Integer;
begin
  ShellSort(Memo1.Lines[i]);
end;

procedure TForm1.ShellSort(CharTable: String);
var
  i, j, k: Integer;
  lBuffer: String;
begin
  i := Length(Memo1.Text) div 2;
  While i > 0 do
  begin
    j := k;
    if Memo1.Lines[j] > Memo1.Lines[j +i] then
    begin
      lBuffer := Memo1.Lines[j];
      Memo1.Lines[j] := Memo1.Lines[j +i];
      Memo1.Lines[j +i] := lBuffer;
    end else
    begin
      k := k +1;
      if k < Length(Memo1.Text) -i then
      begin
        i := i div 2;
        Break;
      end;
    end
  end;
end;

end.

bernerbaer 17. Aug 2011 19:11

AW: funktion erstellen... weiß nicht weiter
 
Zitat:

Zitat von biby90 (Beitrag 1117576)
kann hier jemand den fehler entdecken?

ja, sicher sehe ich Fehler ;-)
Ich finde Du solltest Deine Fragen konkreter formulieren. Wenn man sich selbst des Problems richtig bewusst ist, erkennt man oft selbst wo der Fehler liegt. Wo tritt ein Fehler auf? Ist es ein logischer Fehler oder ein Programmierfehler. Lässt sich der Code kompilieren, wenn nein welche Fehlermeldungen werden angegeben. Hast Du die Inhalte deiner Variablem mal angesehen bzw hast Du dich schon mit dem Debugging beschäftigt? Wenn nein, empfehle ich dir das Tutorial zum Debugging

Bjoerk 17. Aug 2011 22:15

AW: funktion erstellen... weiß nicht weiter
 
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
// i undefiniert, j nicht benutzt
// ShellSort erwartet als Paramter eine CharTable

procedure TForm1.ShellSort(CharTable: String);
// CharTable wid nicht benutzt
// k undefiniert, j auch
// j ist k, weshalb j deklariert
// was soll diese procedure eigentlich machen ?

himitsu 18. Aug 2011 04:58

AW: funktion erstellen... weiß nicht weiter
 
Zitat:

Zitat von Bjoerk (Beitrag 1117686)
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
// i undefiniert, j nicht benutzt
// ShellSort erwartet als Paramter eine CharTable

procedure TForm1.ShellSort(CharTable: String);
// CharTable wid nicht benutzt
// k undefiniert, j auch
// j ist k, weshalb j deklariert
// was soll diese procedure eigentlich machen ?



Delphi-Quellcode:
CharTable: array[0..51] of Char = // warum war das "of String", wo es doch nur einzelne Chars sind?
    ('A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', 'F', 'f', 'G', 'g', 'H',
      'h','I', 'i', 'J', 'j', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o',
      'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v',
      'W', 'w', 'X', 'x', 'Y', 'y', 'Z', 'z');
// oder doch als String
CharTable: String = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz';
// oder als echte Konstante
CharTable = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz';
Bei Letzerem muß natürlich die Länge geprüft werden, zu beginn der Prozedur, bevor man auf die einzelnen Zeichen zugreift.

DeddyH 18. Aug 2011 07:02

AW: funktion erstellen... weiß nicht weiter
 
Das Length(Memo1.Text) verwirrt mich etwas. Müsste hier nicht die Zeilenanzahl stehen?

himitsu 18. Aug 2011 08:27

AW: funktion erstellen... weiß nicht weiter
 
ähhhh ... jupp

biby90 18. Aug 2011 09:22

AW: funktion erstellen... weiß nicht weiter
 
Zitat:

Müsste hier nicht die Zeilenanzahl stehen?
ja ich weiß^^ habs auch gesehen.
habe auch eine Schleife übersehn dir rein muss


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 Uhr.
Seite 4 von 8   « Erste     234 56     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz