AGB  ·  Datenschutz  ·  Impressum  







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

Lotto

Ein Thema von Nicole · begonnen am 14. Mai 2006 · letzter Beitrag vom 14. Mai 2006
Antwort Antwort
Nicole

Registriert seit: 1. Feb 2006
18 Beiträge
 
#1

Lotto

  Alt 14. Mai 2006, 11:17
hallo !

Ich habe ein Programm bekommen und kann mir ein paar zeilen nicht selbst erklären,könntet ihr mir villeicht helfen?


Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    ziehen: TButton;
    ListBox1: TListBox;
    procedure ziehenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ziehenClick(Sender: TObject);
 var i,j,Zahl:integer;
     gezogen:boolean ;
     lotto:array[1..6] of Integer ;
begin
   for i:=1 to 6 do
begin
  listbox1.Clear;
   repeat gezogen:=false; <----?
        zahl:=random(49)+1;
   for j:=1 to i-1 do
      if lotto[j]=Zahl
        then gezogen:=true; <----?
   until gezogen=false; <----?
         lotto[i]:=Zahl;
end; <---- wieso muss da jetzt schon ein end hin?
    for i:=1 to 6 do
listbox1.items.add(inttostr(lotto[i]));
end;
end.

Danke Nicole

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Lotto

  Alt 14. Mai 2006, 11:21
Moin Moin!

Zuallererst wäre es schön, wenn du deinen Beitrag editierst und den Quellcode in Delphi-Tags setzt. Dazu schreibst du einfach vor den Quellcode [ delphi] und danach [ /delphi] (ohne Leerzeichen)

Zitat von Nicole:
Ich habe ein Programm bekommen und kann mir ein paar zeilen nicht selbst erklären,könntet ihr mir villeicht helfen?
Und um welche Zeilen geht es genau?

//Edit: Ah OK, da haben wirs ja
Ich formatiere gleich mal den Quellcode so, daß es etwas übersichtlicher wird

Delphi-Quellcode:
 
begin
  for i:=1 to 6 do
  begin
    listbox1.Clear;
    repeat
      gezogen:=false; <----?
      zahl:=random(49)+1;
        for j:=1 to i-1 do
          if lotto[j]=Zahl then
            gezogen:=true; <----?
    until gezogen=false; <----?
    lotto[i]:=Zahl;
  end; <---- wieso muss da jetzt schon ein end hin?
  for i:=1 to 6 do
    listbox1.items.add(inttostr(lotto[i]));
end;
Hier handelt es sich um eine "Repeat-Until-Schleife". Die Anweisungen innerhalb Repeat und Until werden also solange ausgeführt (mindestens 1 mal), bis die Abbruchbedingung bei Until erfüllt ist.
In Zeile 5 wird eine boolesche Variable auf false gesetzt, was meiner Meinung nach auch einmal außerhalb der Schleife geschehen könnte.
Zeile 9 widerrum setzt die gleiche Variable auf true. Das heißt in diesem Fall einfach nur, daß die Repeat-Until-Schleife bei Erreichen von Until verlassen werden kann.
Und Zeile 10 gibt eben die Abbruchbedingung der Schleife an.
Das End in Zeile 12 muß eben da stehen, weil es die Anweisungen der For-Schleife aus Zeile 2 abschließt. Genaugenommen hätte man sich hier die 2. For-Schleife sparen können und direkt in der oberen Schleife schon in die ListBox schreiben können.

//Edit: Was isn heute los? Ich gebe Delphi-Tags ein, es werden aber Pre-Tags geschrieben, und editieren läßt sich das auch nicht

@MrKnogge: Die waren am Anfang noch nicht da

//Edit: So, jetzt geb ichs endgültig auf, die Delphi-Tags mögen mich heute nich

[edit=alcaeus]Delphi-Tags korrigiert Mfg, alcaeus[/edit]
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Lotto

  Alt 14. Mai 2006, 11:27
Die bei denen sie Fragezeichen dazu gemacht hat.

Delphi-Quellcode:
procedure TForm1.ziehenClick(Sender: TObject);
var
  i, j, Zahl: integer;
  gezogen: boolean;
  lotto: array[1..6] of Integer ;
begin
  for i:=1 to 6 do begin
    listbox1.Clear;
    repeat
      gezogen := false; // anfangs setzen wir gezogen auf false;
      zahl := random(49) + 1;
      for j := 1 to i-1 do
      if lotto[j] = Zahl then gezogen := true; // sollte die zahl allerdings schonmal gezogen worden sein, so setzen wir gezogen auf true
    until gezogen = false; // da beim Lotto jede Zahl nur einmal gezogen werden kann, ziehen wir solange eine Zahl, bis wir eine haben die noch nicht gezogen wurde
    lotto[i] := Zahl;
  end; // dieses end gehört zum beginn der for schleife
  for i:=1 to 6 do
    listbox1.items.add(inttostr(lotto[i]));
end;

end.
gruss
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Lotto

  Alt 14. Mai 2006, 11:29
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    ziehen: TButton;
    ListBox1: TListBox;
    procedure ziehenClick(Sender: TObject);
  private
{ Private-Deklarationen }
  public
{ Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ziehenClick(Sender: TObject);
var
  i, j, Zahl: integer;
  gezogen: boolean;
  lotto: array[1..6] of Integer;
begin
  for i := 1 to 6 do
  begin
    listbox1.Clear;
    repeat
      gezogen := false; < - - - -? (a)
      zahl := random(49) + 1;
      for j := 1 to i - 1 do
        if lotto[j] = Zahl then
          gezogen := true; < - - - -? (b)
    until gezogen = false; < - - - -? (c)
    lotto[i] := Zahl;
  end; < - - - -wieso muss da jetzt schon ein end hin? (d)
for i := 1 to 6 do
  listbox1.items.add(inttostr(lotto[i]));
end;
end.
Dein Code ist ja grauenhaft formatiert. Wundert mich nicht, dass man den nicht so schön lesen kann. Vor allem wenn man noch nicht mit Delphi/Pascal vertraut ist. Vermutlich siehst Du jetzt schon viel mehr.

(a)
Der Variable gezogen wird false zugewiesen.

(b)
Der Variable gezoegn wird true zugewiesen

(c)
Die REPEAT ... UNTIL Schleife wird solange ausgeführt bis gezogen den Wert false hat, jedoch mindestens 1 mal

(d)
Weil hier die for schleife endet
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Nicole

Registriert seit: 1. Feb 2006
18 Beiträge
 
#5

Re: Lotto

  Alt 14. Mai 2006, 12:06
DANKESCHÖN
  Mit Zitat antworten Zitat
Nicole

Registriert seit: 1. Feb 2006
18 Beiträge
 
#6

Re: Lotto

  Alt 14. Mai 2006, 20:06
hab noch eine frage

for j:=1 to i-1 do is das dazu da ,dass die Zahlen geprüft werden,die es noch nicht gibt??
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Lotto

  Alt 14. Mai 2006, 20:20
In dieser Schleife gehst du alle bereits gezogenen Zahlen (die liegen ja im Array lotto) durch und prüfst, ob eine davon mit deiner gerade gezogenen übereinstimmt. Ist das der Fall, wird die Repeat-Until-Schleife nicht verlassen und eine neue Zahl gezogen, usw.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  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 18:02 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