Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi zufallszahlen im Stringgrid! (https://www.delphipraxis.net/134588-zufallszahlen-im-stringgrid.html)

chris1340check 25. Mai 2009 12:42


zufallszahlen im Stringgrid!
 
Hallo,
ich habe folgendes Problem.
Ich möchte dem Stringgrid 14 Zufallszahlen zuweisen.
Delphi-Quellcode:
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;
dies Funktioniert ja supa, dass Ding ist jetzt nur,
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]

p80286 25. Mai 2009 13:02

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

Namenloser 25. Mai 2009 13:09

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:

Namenloser 25. Mai 2009 13:43

Re: zufallszahlen im Stringgrid!
 
Zitat:

Zitat von chris1340check
Hey,
ja das hört sich alles so leicht an.
Ich habe mir das auch so vorgestellt bin aber erst in meinem 1 Programmierjahr und weiß daher nicht wie ich dies im Quelltext ausdrücken soll.

villt kannst du mir sagen,
wie ich die zufallszahlen in das arry bekomme und dies auch gleichzeitig sortiere

lg Chris ;)

p.s. thx im Vorraus

Die Grundlagentutorials auf Delphi-Treff.de sind empfehlenswert. Vielleicht hilft dir das weiter.

simmi 25. Mai 2009 14:11

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

Klaus01 25. Mai 2009 14:14

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:
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;
Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz