AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

zufallszahlen im Stringgrid!

Ein Thema von chris1340check · begonnen am 25. Mai 2009 · letzter Beitrag vom 25. Mai 2009
Antwort Antwort
chris1340check

Registriert seit: 25. Mai 2009
Ort: Dreieich
2 Beiträge
 
#1

zufallszahlen im Stringgrid!

  Alt 25. Mai 2009, 13:42
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]
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

Re: zufallszahlen im Stringgrid!

  Alt 25. Mai 2009, 14:02
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
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#3

Re: zufallszahlen im Stringgrid!

  Alt 25. Mai 2009, 14:09
Hallo, chris1340check
Willkommen in der 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
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

Re: zufallszahlen im Stringgrid!

  Alt 25. Mai 2009, 14:43
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.
  Mit Zitat antworten Zitat
Benutzerbild von simmi
simmi

Registriert seit: 24. Nov 2004
Ort: Röbel/Müritz
112 Beiträge
 
Delphi XE5 Professional
 
#5

Re: zufallszahlen im Stringgrid!

  Alt 25. Mai 2009, 15:11
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
Uwe
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: zufallszahlen im Stringgrid!

  Alt 25. Mai 2009, 15:14
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
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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