Autor Beitrag
Kev
Hält's aus hier
Beiträge: 7

Windows XP
Delphi 2005 PE
BeitragVerfasst: Di 05.12.06 21:59 
Hey Leute, ich hätte da gerne mal ein Problem

Also wie soll ich sagen, ich mache mein Abi mit der Fachrichtung Datenverarbeitung und wir sollen einen Lottogenerator programmieren, bei dem nach zufallgenerierte zahlen zwischen 1 und 49 sich nicht wiederholen. Alles funktioniert, nur das sich die Zahlen alle zwei male wiederholen bzw. doppelt vorkommen.

Benötige ein bissl Hilfe.
Danke euch


Mit motorsportlichen Grüßen

Kev
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Di 05.12.06 22:09 
Bei so nem einfachem Thema Doppelpost, obwohls bestimmt min. 20 mal in der Suche drinsteht? :?

Hier steht die Lösung: (Problem ist zwar nich ganz das gleiche, aber die Lösung ist die gleiche)
www.delphi-forum.de/...67263&highlight=

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
oldmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: Mi 06.12.06 10:48 
Hi Kev, erstmal Willkommen.
@Jakob
sieh's nich so eng, er ist ganz frisch... :wink:
@Kev
Ok, Links sind auch Lösungsmethoden. Aber vielleicht hielft dir ein Wenig Denken. Was passiert so beim Lottozahlen ziehen:
49 Kugeln fallen in eine Trommel.
Eine nach der anderen wird herausgeholt, also ist nicht mehr in der Trommel drin.
Gut, wie packen wir es in ein Programm ?
Vielleicht so:
ausblenden Delphi-Quelltext
1:
2:
3:
Var
   LottoList   : TStringlist; // Eine Stringliste deklarieren
   Zahlenfolge : TStringlist; // für die gezogenen Zahlen

Die Listen deklarierst du global.
In der Create-Methode deines Formulares initialisierst du dann diese beiden Listen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Procedure TMyForm.Create;
begin
  LottoList   := TStringlist.Create; // Initialisieren
  Zahlenfolge := TStringlist.Create; // Initialisieren

  ......

end;


Nun brauchst du die OnClick-Ereignismethode eine Buttons, um deine Lottozahlen in die Trommel zu kippen und 6 Zahlen wieder heraus zu ziehen

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
Procedure TMyForm.MyButton1Click(Sender : TObject); // Ziehung beginnen
Var i   : Integer;
    x   : Integer;
Begin
  LottoList.Clear; // Erstmal die Liste komplett leeren
  Zahlenfolge.Clear; // die auch
  For i :=1 to 49 do 
     LottoList.Add(IntToStr(i)); // 49 Kugeln in den Bottich werfen
  For i:=1 to 6 do               // wir ziehen automatisch 6 Zahlen
  begin
    x:=Random(49)+1-i; // 6 zufällige Zahlen, wobei der Inhalt deiner Liste kleiner wird
    ZahlenFolge.Add(Lottolist[x]); // Gezogene Zahl eintragen
    LottoList.Delete(x);           // und aus der Trommel entfernen
  end;
end;

So, nun hast du ein weiteres Gerüst und kannst ein bisschen verbessern und dran feilen. Wie du siehst, es ist einfach, Vorgänge nachzubilden, wenn man weiß, welche Komponenten geeignet sind.
Und nun viel Spass.

_________________
Zier dich nich so, ich krieg dich schon....