in Informatik sollen wir zur Zeit mittels Lazarus ein Programm entwickeln, mit dem wir eine Reihe von zufällig gewählter Zahlen anzeigen. Bei dieser Zahlenreihe sollen jedoch keine Zahlen doppelt vorkommen. Einen Quelltext habe ich zwar schon, aber ich würde das Programm gerne mit einer Schleife laufen lassen, sodass man auch einige Parameter verändern kann, da die Zahlenreihe im Moment noch statisch ist, d.h. ich mache eine Reihe von 10 Zahlen, müsste jedoch den gesamten Quelltext ändern, um 11 Zahlen o.ä. zu haben.
so sieht mein Quelltext im Moment aus. Hat einer von euch eine Lösung wie man das geschickter angehen kann?
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TSortier }
TSortier = class(TForm)
BTgen: TButton;
BTsort: TButton;
BTspei: TButton;
BTauf: TButton;
LAzahl: TLabel;
procedure BTaufClick(Sender: TObject);
procedure BTgenClick(Sender: TObject);
procedure BTsortClick(Sender: TObject);
procedure BTspeiClick(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Sortier: TSortier;
arr: array of integer;
i,j,k: integer;
implementation
{$R *.lfm}
{ TSortier }
{------------------------zufällige Zahlenreihe ohne doppelte Zahlen------------}
procedure TSortier.BTgenClick(Sender: TObject);
begin
LAzahl.caption:='';
setlength(arr,10);
arr[0]:=random(100);
repeat
arr[1]:=random(100);
until arr[1]<>arr[0];
repeat
arr[2]:=random(100);
until (arr[2]<>arr[1]) and (arr[2]<>arr[0]);
repeat
arr[3]:=random(100);
until (arr[3]<>arr[2]) and (arr[3]<>arr[1]) and (arr[3]<>arr[0]);
repeat
arr[4]:=random(100);
until (arr[4]<>arr[3]) and (arr[4]<>arr[2]) and (arr[4]<>arr[1]) and (arr[4]<>arr[0]);
repeat
arr[5]:=random(100);
until (arr[5]<>arr[4]) and (arr[5]<>arr[3]) and (arr[5]<>arr[2]) and (arr[5]<>arr[1]) and (arr[5]<>arr[0]);
repeat
arr[6]:=random(100);
until (arr[6]<>arr[5]) and (arr[6]<>arr[4]) and (arr[6]<>arr[3]) and (arr[6]<>arr[2]) and (arr[6]<>arr[1]) and (arr[6]<>arr[0]);
repeat
arr[7]:=random(100);
until (arr[7]<>arr[6]) and (arr[7]<>arr[5]) and (arr[7]<>arr[4]) and (arr[7]<>arr[3]) and (arr[7]<>arr[2]) and (arr[7]<>arr[1]) and (arr[7]<>arr[0]);
repeat
arr[8]:=random(100);
until (arr[8]<>arr[7]) and (arr[8]<>arr[6]) and (arr[8]<>arr[5]) and (arr[8]<>arr[4]) and (arr[8]<>arr[3]) and (arr[8]<>arr[2]) and (arr[8]<>arr[1]) and (arr[8]<>arr[0]);
repeat
arr[9]:=random(100);
until (arr[9]<>arr[8]) and (arr[9]<>arr[7]) and (arr[9]<>arr[6]) and (arr[9]<>arr[5]) and (arr[9]<>arr[4]) and (arr[9]<>arr[3]) and (arr[9]<>arr[2]) and (arr[9]<>arr[1]) and (arr[9]<>arr[0]);
LAzahl.caption:=inttostr(arr[0])+' '+inttostr(arr[1])+' '+inttostr(arr[2])+' '+inttostr(arr[3])+' '+inttostr(arr[4])+' '+inttostr(arr[5])+' '+inttostr(arr[6])+' '+inttostr(arr[7])+' '+inttostr(arr[8])+' '+inttostr(arr[9]);
end;