![]() |
AW: funktion erstellen... weiß nicht weiter
versuch ich später habe jetzt eine neue Aufgabe bekommen... naja nach BubbleSort kommt jetzt halt ShellSort^^
|
AW: funktion erstellen... weiß nicht weiter
Da wirst Du aber auch vergleichen müssen ;)
|
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! |
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. |
AW: funktion erstellen... weiß nicht weiter
Zitat:
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 ![]() |
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 ? |
AW: funktion erstellen... weiß nicht weiter
Zitat:
Delphi-Quellcode:
Bei Letzerem muß natürlich die Länge geprüft werden, zu beginn der Prozedur, bevor man auf die einzelnen Zeichen zugreift.
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'; |
AW: funktion erstellen... weiß nicht weiter
Das Length(Memo1.Text) verwirrt mich etwas. Müsste hier nicht die Zeilenanzahl stehen?
|
AW: funktion erstellen... weiß nicht weiter
ähhhh ... jupp
|
AW: funktion erstellen... weiß nicht weiter
Zitat:
habe auch eine Schleife übersehn dir rein muss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 Uhr. |
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