![]() |
zufallszahlen im Stringgrid!
Hallo,
ich habe folgendes Problem. Ich möchte dem Stringgrid 14 Zufallszahlen zuweisen.
Delphi-Quellcode:
dies Funktioniert ja supa, dass Ding ist jetzt nur,
procedure TForm1.Button1Click(Sender: TObject);
begin randomize; spalte:= 7; zeile := 2; for y:=0 to (zeile -1) do begin for x:=0 to (spalte-1) do begin i:=random(100)+1; Form1.StringGrid1.Cells[x,y]:= IntToStr(i); end; end; end; 1. es dürfen keine Doppelten Zahlen erscheinen. 2. Die Zahlen mussen nach der Größe sortiert werden. Hoffe ihr könnt mir helfen :? :? :? mfg Chris [edit=Phoenix]Delphi-Tags ein- und die ganzen unnötigen B-Tags ausgefügt. Das nächste mal bitte selber auf die Delphi-Tags achten. Danke. Mfg, Phoenix[/edit] |
Re: zufallszahlen im Stringgrid!
Hallo Chris,
wo ist Dein Problem? Du erstellst ein array [1..14] of zufallszahl. A) Dann generierst Du in einer Schleife eine Zufallszahl. Diese überprüfst Du ob es sie schonm einmal gibt, wenn Ja dann gehst Du zu A) dann sortierst Du das Array. Dann werden die Inhalte des Arrays in das Stringgrid übernommen. Fertig K-H |
Re: zufallszahlen im Stringgrid!
Hallo, chris1340check
Willkommen in der DP :dp: Sortieren kannst du die Zahlen am einfachsten, während du sie erzeugst. Nach jeder generierten Zahl gehst du die Positionen im Array durch, bis du die passende Stelle gefunden hast, und dort fügst du sie dann ein. Das Verfahren ist auch als Insertion-Sort bekannt. Btw: Du kannst dir sehr viel Aufwand bei der Formatierung hier im Forum sparen, wenn du die [ Delphi ]-Tags verwendest :mrgreen: |
Re: zufallszahlen im Stringgrid!
Zitat:
![]() |
Re: zufallszahlen im Stringgrid!
Ein Beispiel
Delphi-Quellcode:
var zahl : array[1..14] of integer;
i, j, k : word; ok : boolean; . . . //Anfangswert festlegen for i:=1 to 14 do zahl[i]:=-1; Randomize; i:=1; repeat ok:=true; //Zufallszahl bilden k:=random(100)+1; //Prüfen ob die Zahl sich bereits in der Liste befindet for j:=1 to i do if k=zahl[i] then ok:=false; //Übernahme der neuen Zahl und Zähler erhöhen if ok then begin Zahl[i]:=k; inc(i); end; until i=15; . //In Tabelle übernehmen |
Re: zufallszahlen im Stringgrid!
Hallo,
Du könntest auch mit einer StringList arbeiten. Mit der StringList ist es möglich die Liste zu sortieren und doppelte Einträge zu unterdrücken.
Delphi-Quellcode:
Grüße
procedure TForm1.Button1Click(Sender: TObject);
var sl :TStringList; begin sl := TStringList.create; sl.Sorted:=true; sl.Duplicates:=dupIgnore; while sl.Count -1 < 14 do sl.add(format('%.3d',[(random(100)+1)])); Memo1.Lines.Assign(sl); sl.free; end; Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 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