Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ein Lottoprogramm (https://www.delphipraxis.net/17238-ein-lottoprogramm.html)

MarkL 1. Mär 2004 17:46


ein Lottoprogramm
 
Hallo,
wir haben als Hausaufgabe in Informatik ein Lottoprogramm aufbekommen, das n Lottoziehung simulieren soll. Soweit so gut, das klappt.
Aber am Ende soll auch noch ausgegeben werden, wie oft welche Zahl gezogen wurde und da komm ich nicht weiter. Ich ohffe jemand kann mir helfen.

Bis jetzt sieht es mal so aus:

Delphi-Quellcode:
unit lotto_u;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    ListBox1: TListBox;
    Button1: TButton;
    ListBox2: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var L:ARRAY[1..49] OF integer;
i,j,k,n: integer;
neu: BOOLEAN;
begin
 randomize;
 ListBox1.Clear;
 ListBox2.Clear;
 n:=StrToInt(edit1.text);
 for k:=1 to n do
   begin
        for i:=1 to 6 do
           begin
               repeat
                   neu:=true;
                   L[i]:=Random(49)+1;
                   for j:=1 to i-1 do
                   if L[j] = L[i]
                   then neu:=false;
               until neu = true;
             ListBox1.Items.Add(IntToStr(L[i]));
           end;

   end;


end;

end.

Brainstalker 1. Mär 2004 17:50

Re: ein Lottoprogramm
 
Ich würd sagen das du am besten ein array benutzt. Da kannst dann bequem alle Zahlen eintragen und am ende auch ganz leicht wieder auslesen.

Chris1986 1. Mär 2004 17:51

Re: ein Lottoprogramm
 
Hi
nimm ein zweites Array
Delphi-Quellcode:
gezogene_Zahlen[1..49] of byte;
jetz durchläufst du dein erstes array und erhöhst im Feld "gezogene Zahlen" immer die Zahlen die schong gezogen wurden.

MfG
Christian

MarkL 1. Mär 2004 18:00

Re: ein Lottoprogramm
 
ich versteh nicht ganz wie du das mit "durchlaufen" meinst. :?

nailor 1. Mär 2004 18:04

Re: ein Lottoprogramm
 
du gehst in einer for-Schleife deine gezogenen Zahlen durch, und erhöhst wie Chris vorgeschlagen hat

gezogene_Zahlen[ array_mit_allen_Zahlen[ for_schleifen_variable]]]

oder du machst das o.g. direkt beim Ziehen der Zahl

MarkL 1. Mär 2004 18:27

Re: ein Lottoprogramm
 
könnte ich da mal ein source code beispiel bekommen? :gruebel:

Sharky 2. Mär 2004 07:12

Re: ein Lottoprogramm
 
Hai MarkL,

schaue Dir mal in diesem Thread speziell die Beiträge von Hagen an.
Dort wurde ausführlich über ein "Lottoprogramm" gesprochen. Der oben gepostete Ansatz ist dann nämlich falsch. ;-)

Auf Seite 2 des Threads fangen seine Erklärungen an!

MarkL 2. Mär 2004 13:20

Re: ein Lottoprogramm
 
Zitat:

Zitat von Nailor
du gehst in einer for-Schleife deine gezogenen Zahlen durch, und erhöhst wie Chris vorgeschlagen hat

gezogene_Zahlen[ array_mit_allen_Zahlen[ for_schleifen_variable]]]

oder du machst das o.g. direkt beim Ziehen der Zahl

genau dafür bräuchte ich ein beispiel...

nailor 2. Mär 2004 13:33

Re: ein Lottoprogramm
 
ist jetzt ohne syntaxcheck getippt, sollte aber das prinzip zeigen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer; arr: array[1..49] of integer;
begin
for i := 0 to 99 do
  ListBox1.Items.Add(inttostr(random(49) + 1));

for i := 1 to 49 do
  arr[i] := 0;

for i := 0 to pred(ListBox1.Count) do
  inc(arr[strtoint(ListBox1.Items[i])]);

for i := 1 to 49 do
  ListBox2.Items.Add(inttostr(arr[i]));
end;
//edit: bugfix

MarkL 2. Mär 2004 13:52

Re: ein Lottoprogramm
 
Dankeschön! Jetzt funktionierts! :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 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