![]() |
Programm Selectionsort-Programm erstellen für Schule
Hallo Delphi-Praxis,
für einen Vortrag über Selectionsort in Informatik möchte ich selber ein Programm dafür erstellen. Da Selectionsort als einfach zu programmieren galt, dachte ich, dasss es einfach wäre. Jedoch wurde ich schnell eines Besseren belehrt und verzweifle geradezu. Ich hab gehört, dass man dafür Arrays braucht, aber ich keine Ahnung davon, da wir Arrays nie im Unterricht behandelt haben. Es wäre schön, wenn ihr mir helfen könnnte. Das Programm soll Zahlen zufällig generieren und diese dann ordnen. |
AW: Programm Selectionsort-Programm erstellen für Schule
Hallo,
und herzlich willkommen in der DP. Zitat:
Aus der OH Zitat:
Delphi-Quellcode:
// so wenn die Arraygrenzen fix sind (0..100 ist nur ein Beispiel)
var A : array [0..100] of Integer; // hier Basistyp Integer, kann aber auch ein anderer Basistyp sein
Delphi-Quellcode:
Dann kannst Du z. B. folgende Zuweisungen machen:
// oder wenn es dynamisch sein soll
var A : array of Integer; // mit SetLength (A, 100) dann dem Array Speicher zuweisen
Delphi-Quellcode:
und auf die Elemente Deines Arrays zugreifen, z. B.:
A [0] := 2;
A [1] := 5; A [2] := 1; A [3] := 7; A [4] := 3; ... A [100] := 143;
Delphi-Quellcode:
Wenn Du dann Dein Array initialisiert hast, dann musst Du nur noch sortieren - fertig.
if A [0] = 1 then
TuWas else TuWasAnderes Mit repeat und for Schleifen bist Du sicherlich vertraut. Dann schau Dir noch die Random Funktion an ggf. ![]() Gruß |
AW: Programm Selectionsort-Programm erstellen für Schule
Danke für die Antwort, aber vorstellen was ich machen soll kann ich mir nicht. Könntest du mir sagen wie man die Zufallszahlen ins Memo bekommt? Ich möchte 6 zufällige Zahlen per Knopfdruck auf das erste Memo bekommen und diese dann mittels eines weiteren diese dann ordnen.
Ich habe versucht ein Prozedur einzufügen, irgendwie gelingt mir das nicht.
Code:
Es kommt folgende Fehlermeldung " uselect.pas(23,42) Fatal: Syntax error, "OF" expected but "[" found
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 FormCreate(Sender: TObject); procedure Selectionsort(var A: array [1..6] of Integer); private { private declarations } A: array (1..6) of Integer; public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure SelectionSort(var A: array of Integer); var i, j: Integer; pos, temp: Integer; begin for i := 1 to 6 - 1 do begin pos := i; for j := i + 1 to 6 do begin if A[j] < A[pos] then pos := j; end; temp := A[i]; A[i] := A[pos]; A[pos] := temp; end; end; procedure TForm1.Button1Click(Sender: TObject); begin close; end; procedure TForm1.Button2Click(Sender: TObject); begin end; procedure TForm1.FormCreate(Sender: TObject); begin randomize; end; end. " |
AW: Programm Selectionsort-Programm erstellen für Schule
Zitat:
Delphi-Quellcode:
A: array [1..6] of Integer;
|
AW: Programm Selectionsort-Programm erstellen für Schule
Mir persönlich gefällt es nicht, das es sowohl den Parameter mit dem Namen A gibt, als auch die private Variable mit dem Namen A.
Geht zwar, da man auf das eine mit self.A zugreifen kann, aber ist meiner Meinung nach sehr unschön, da man gerade am Anfang das verwechseln könnte und denkt es wäre beides das selbe. |
AW: Programm Selectionsort-Programm erstellen für Schule
Zitat:
|
AW: Programm Selectionsort-Programm erstellen für Schule
Zitat:
Delphi-Quellcode:
for i:=Low(myArray) to High(myArray) do
myArray[i]:= //zufallszahl - OH: Random myMemo.Clear; for i:=Low(myArray) to High(myArray) do myMemo.Lines.Add(IntToStr(myArray[i])); |
AW: Programm Selectionsort-Programm erstellen für Schule
Wieso High() - 1?
|
AW: Programm Selectionsort-Programm erstellen für Schule
Ich hab so probiert, dass ich im ersten memo die zufallszahlen habe, aber ich krieg die zahlen im 2.memo nicht geordnet. Da kommt überall 0 raus.
Code:
könnt ihr mir mal schreiben, wie man es richtig macht?
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; 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 } Zufallszahl: integer; A: 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); const Zufallsbereich=100; begin Memo1.Lines[0]:=IntToStr(Random(Zufallsbereich)+1); Memo1.Lines[1]:=IntToStr(Random(Zufallsbereich)+1); Memo1.Lines[2]:=IntToStr(Random(Zufallsbereich)+1); Memo1.Lines[3]:=IntToStr(Random(Zufallsbereich)+1); Memo1.Lines[4]:=IntToStr(Random(Zufallsbereich)+1); Memo1.Lines[5]:=IntToStr(Random(Zufallsbereich)+1); end; procedure TForm1.Button3Click(Sender: TObject); var i,j,m,x:integer; const n=5; begin for i:=0 to 5 do begin x:=i; for j:=i+1 to n do if A[x] > A[j] then x:=j; begin m:=A[x]; A[x]:=A[i]; A[i]:=m; memo2.lines.Add(inttostr(A[i])); end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin randomize; end; end. |
AW: Programm Selectionsort-Programm erstellen für Schule
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 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