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.
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?