![]() |
AW: Min-Sort Verfahren
Zitat:
Gruß K-H |
AW: Min-Sort Verfahren
Da Pascal keinen Unterschied zwischen i und I macht, benutzt du in
Delphi-Quellcode:
den äußeren Schleifenindex doppelt. Nimm einfach ein anderen zB k (der dann natürlich deklariert werden muß).
for i:= 1 to 20 do
memo1.Lines.Add(inttostr(za[i])); |
AW: Min-Sort Verfahren
Danke für die Antwort, jetzt kommt aber bei mir diese Fehlermeldung:
"uselect.pas(73,7) Fatal: Syntax error, ";" expected but "identifier ZA" found "
Code:
unit USelect;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Memo1: TMemo; Memo2: TMemo; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { private declarations } za: array [1..20] of integer; public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin close; end; procedure TForm1.Button2Click(Sender: TObject); var i,x,y,k:Integer; begin memo1.Clear; memo2.Clear; for I:= 1 to 20 do za[i] :=i; for I:= 1 to 20 do begin x:=Random(20-i)+1; y:=za[i]; za[i]:=za[x]; za[x]:=y; for k:= 1 to 20 do memo1.Lines.Add(inttostr(za[i])); end; end; procedure TForm1.Button3Click(Sender: TObject); var i,j,m,x:integer; begin for I:= 1 to 20 do begin x:=i; for j:=i+1 to 20 do if za[x] > za[j] then x:=j; begin m:=za[x] za[x] := za [i]; za[i] := m; end; memo2.Lines.Add(inttostr(za[i])); end; end; end; procedure TForm1.FormCreate(Sender:TObject); begin randomize; end; end. |
AW: Min-Sort Verfahren
In dem Fall sagt die Meldung doch schon, was Sache ist :)
Warum wird in der Zeile wohl ein Semikolon erwartet? Kurzer Blick in die Zeile davor... |
AW: Min-Sort Verfahren
Oh, mein Fehler. Danke das du mich darauf hingewiesen hast. Das Programm funktioniert, aber leider kommen bei dem Memo-Feld für die Zahlen immer die gleichen Zahlen. Und wenn ich auf das Button für das Ordnen der Zahlen drücke, kommen unterschiedliche Zahlen heraus.
Code:
Könnt ihr mir bitte helfen?:cry:
unit USelection;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Label1: TLabel; Label2: TLabel; Memo1: TMemo; Memo2: TMemo; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { private declarations } za: array [1..100] of integer; public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin close; end; procedure TForm1.Button2Click(Sender: TObject); var i,x,y,k:integer; begin memo1.Clear; memo2.Clear; for I:=1 to 100 do za[i]:=i; for I:=1 to 100 do begin x:=Random(100-i)+1; y:=za[i]; za[x]:=y; for k:=1 to 100 do memo1.Lines.Add(IntToStr(za[i])); end; end; procedure TForm1.Button3Click(Sender: TObject); var i,j,m,x:integer; begin for I:=1 to 100 do begin x:=i; for j:=i+1 to 100 do if za[x] > za[j] then x:=j; begin m:=za[x]; za[x]:=za[i]; za[i]:=m; memo2.lines.Add(inttostr(za[i])); end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin randomize; end; end. |
AW: Min-Sort Verfahren
Du mußt natürlich den bemängelten doppelten Index in der gesamten Schleife ersetzen, nicht nur in der for-Anweisung, also:
Delphi-Quellcode:
for k:=1 to 100 do
memo1.Lines.Add(IntToStr(za[k])); |
AW: Min-Sort Verfahren
Meinst du so?
Code:
das programm hat immer noch die selben probleme
unit USelection;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Label1: TLabel; Label2: TLabel; Memo1: TMemo; Memo2: TMemo; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { private declarations } za: array [1..6] of integer; public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin close; end; procedure TForm1.Button2Click(Sender: TObject); var i,x,y,k:integer; begin memo1.Clear; memo2.Clear; for I:=1 to 6 do za[k]:=i; for I:=1 to 6 do begin x:=IntToStr(Random(100)+1); y:=za[k]; za[k]:=y; for k:=1 to 6 do memo1.Lines.Add(IntToStr(za[k])); end; end; procedure TForm1.Button3Click(Sender: TObject); var i,j,m,x:integer; begin for I:=1 to 6 do begin x:=i; for j:=i+1 to 6 do if za[x] > za[j] then x:=j; begin m:=za[x]; za[x]:=za[i]; za[i]:=m; memo2.lines.Add(inttostr(za[i])); end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin randomize; end; end. auch wenn ich etwas ändere:( |
AW: Min-Sort Verfahren
Ich habe mir einmal erlaubt, Deinen Sourcecode ein wenig zu formatieren:
Delphi-Quellcode:
Da frag ich mich schon was Du erreichen willst.
procedure TForm1.Button3Click(Sender: TObject);
var i,j,m,x:integer; begin for I:=1 to 6 do begin x:=i; for j:=i+1 to 6 do if za[x] > za[j] then x:=j; begin m:=za[x]; za[x]:=za[i]; za[i]:=m; memo2.lines.Add(inttostr(za[i])); end; end; end; Übrigens ist Delphi natürlich selbstdokumentierend, aber Kommentare erleichtern die Fehlersuche meist ungemein, vor allem wenn darin steht warum etwas gemacht wird. Gruß K-H |
AW: Min-Sort Verfahren
Ich möchte das so haben:
Mittels einen ersten Button soll im 1.Memo-Feld, die Zufallszahlen generiert werden und mittels einen 2.Button soll in einen 2.Memo diese Zufallszahlen mittels selectionsort geordnet werden. Mein Problem ist, dass mein Programm beim ersten button-Klick im Memo die gleichen Zufallszahlen erscheinen unzwar alle 100. Im ersten Memo wird dabei in allen Arrays von 1 bis 100 hochgezählt bis es zur 100 angelangt. Und wenn ich mit den 2.Button die Zahlen sortieren möchte kommt folgende Reihenfolge: 98 98 99 100 100 Und es kommt immer die gleichen zufallszahlen und die gleiche REihenfolge nacht selectionsort. Das ist wirklich zum verzweifeln.:cry: Hier noch mal der Quellcode
Code:
{$mode objfpc}{$H+}
interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Label1: TLabel; Label2: TLabel; Memo1: TMemo; Memo2: TMemo; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { private declarations } za: array [1..6] of integer; public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin close; end; procedure TForm1.Button2Click(Sender: TObject); var i,x,y,k:integer; begin memo1.Clear; memo2.Clear; for I:=1 to 6 do za[k]:=i; for I:=1 to 6 do begin x:=IntToStr(Random(100)+1); y:=za[k]; za[k]:=y; for k:=1 to 6 do memo1.Lines.Add(IntToStr(za[k])); end; end; procedure TForm1.Button3Click(Sender: TObject); var i,j,m,x:integer; begin for I:=1 to 6 do begin x:=i; for j:=i+1 to 6 do if za[x] > za[j] then x:=j; begin m:=za[x]; za[x]:=za[i]; za[i]:=m; memo2.lines.Add(inttostr(za[i])); end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin randomize; end; end. Ach ja ich benutze Lazarus, ist das der Grund dafür? |
AW: Min-Sort Verfahren
Wenn man sich das mal in Ruhe anschaut:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:53 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