Entwickler-Ecke

Sonstiges (Delphi) - Lottozahlen


nic - Di 16.07.02 17:53
Titel: Lottozahlen
Hallo Leute,

falls ich im falschen Forum poste, verschiebt es bitte. Danke euch. Also ich habe folgendes Problem. Ich schreibe übermorgen Informatik und darf keine 0 Punkte schreiben. Ich war leider kaum da und hab keine Ahnung von Informatik, ich weiß nur, dass wir so nen Art Lottospielprogramm programmiert haben, wo man dann die Lottozahlen und ne Zusatzzahl bekommt, immer ne andere halt. Denke sowas kommt auch in der Arbeit. Kann mir jemand sagen wie das genau geht oder mir nen Link schicken, von einem, der das schon gemacht hat ? Dürfte ganz einfach sein, ist nur Grundkurs!

Ich danke euch,
Andreas

Titel geändert. Siehe Richtlinien. TINO


Datadoll - Di 16.07.02 18:03

mmmh.... scheint wirklich simpel zu sein... spontan würd ich mir ein paar editfelder schnappen, die auf read only stellen... einen button zum aktivieren und dann soll der im jeden editfeld eine randomzahl zwischen 0 und 50 setzten *muha* natürlich muss überprüfen, ob eine zahl doppelt vorkommt und wenn das der fall ist, einfach für dieses editfeld einen neu generierten wert zuweisen *g* das war´s

ich geb dir hier jetzt x-tra keinen quellcode, weil ich der meinung bin, dass doo es selbst hinkrichst und weil dieses Forum keine Hausaufgaben-Community darstellt *grrr*

MfG Datadoll

P.S. Ich bin selber kein Crack, würde es aber auch hinkriegen. Wenn also jemand verfeinerungen am stacht hat, kann der sich ja melden. Das wra nur so mein erster gedanke zur programmbeschreibung :D


MathiasH - Di 16.07.02 20:10

Einen ganzen Quellcode werd ich dir auch nicht geben :cry: , aber dafär ein paar Tips: :)


Delphi-Quelltext
1:
Random(49)+1;  //liefert einen zufallswert(integer) zwischen 1 und 49                    


das Auslosen der Zahlen würd ich so bauen: du hast ein array mit den Zahlen 1-49 gefüllt dann lost du den ersten Wert aus und trägst in die entsprechende array-stelle jetzt -1 ein, beim zweiten(3., 4...) Wert muss immer so lange ne gelost werden(while-Schleife), bis du einen Wert bekommst(aus dem array) der nicht -1 ist(also schon vorhanden), wenn der werte <> -1 ist ist er deine zwei, drit...-te Zufallszahl

Ach ja, die zusatzzahl:


Delphi-Quelltext
1:
zusatzzahl := Random(6)+1;  //sind doch Werte von 1-6 oder                    



PS schreibt ihr im Grundkurs jetzt noch Tests? :P, bei uns in der Klasse wird nurnoch geschlafen!!

MathiasH

Moderiert von user profile iconKlabautermann: Code- durch Delphi-Tags ersetzt


hitstec - Di 16.07.02 21:31

Hi,

also sortiert sollten die Zahlen wohl auch werden. Ich hab mal schnell ein Prog gecodet:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
procedure TForm1.Button1Click(Sender: TObject);
var arrAll: array[1..49of Byte; i,k,iRand,iPos: Byte;
    arrZahlen,arrSort: array[1..6of Byte;
begin
 //Zufallsgenerator wird iniziiert.
 Randomize; 

 // Zahlenarray wird mit Zahlen von 1-49 gefüllt.
 for i:=Low(arrAll) to High(arrAll) do arrAll[i]:=i; 

 //Zufallszahlen werden generiert und gespeichert.
 for i:=Low(arrZahlen) to High(arrZahlen) do begin 
  iRand:=Random(49)+1;
  while arrAll[iRand]=0 do iRand:=Random(49)+1;
  arrZahlen[i]:=iRand;
  arrAll[iRand]:=0;
 end;
 
 //Zufallszahlen werden sortiert.
 for i:=Low(arrZahlen) to High(arrZahlen) do begin 
  iPos:=0;
  for k:=Low(arrZahlen) to High(arrZahlen) do begin
   if arrZahlen[i]>=arrZahlen[k] then Inc(iPos);
  end;
  arrSort[iPos]:=arrZahlen[i];
 end;
end;

Als Ergbeniss hast du ein sortiertes Array arrSort. Das kannst du in einer For-Schleife zu einem Textstring zusammenfügen uuund in ein Textfeld ausgeben.

(Zuatzzahl siehe oben)

Moderiert von user profile iconKlabautermann: Code- durch Delphi-Tags ersetzt


Onoprienko - Mi 17.07.02 16:35

Also die Lösung von hitstec finde ich für einen, der nie da war, schon heftig. Hier ist mal meine (hitstec, nicht falsch verstehen!):


Auf der Form sollte ein Button (Button1) und ein Edit-Fenster (Edit1) vorhanden sein.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.Button1Click(Sender: TObject);
var
  lauf,zufalls_zahl,zusatz_zahl:integer;
  zahlen:array[1..49of integer;
begin
  randomize;  //Zufallsgenerator wird initialisiert
  lauf:=0;
  repeat  //6 Zahlen ermitteln, entspr. Feldplätze z.B. auf -1 setzen
    zufalls_zahl:=random(49)+1
    if zahlen[zufalls_zahl]<>-1
    then begin
           zahlen[zufalls_zahl]:=-1;
           inc(lauf);
         end;
  until lauf=6;
  zusatz_zahl:=random(6)+1;  //Zusatzzahl ermitteln 
  for lauf:=1 to 49  //alle Feldplätze durchgehen
  do if zahlen[lauf]=-1  //die, die auf -1 sind, wurden ermittelt
     then edit1.text:=edit1.text+inttostr(zahlen[lauf]);  //werden ausgegeb.
  edit1.text:=edit1.text+inttostr(zusatz_zahl);  //und Zzahl ausgeben
end;


Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt.


MathiasH - Mi 17.07.02 17:20

@histec: für mich schaut deine Lösung ziemlich nach meiner Beschreibung aus :D , aber is ja egal, ich wollt halt keinen ganzen Code schreiben, da nic ja auch noch was selber machen sollte,

aber nun der eigentliche Grund dieses Posts:
wozu werden bei histec's Lösung die Zahlen sortiert, da hätte man beim Lotto shr viel höhere Gewinnchancen!!! 8)

MathiasH


hitstec - Mi 17.07.02 17:21

Zitat:
Also die Lösung von hitstec finde ich für einen, der nie da war, schon heftig. Hier ist mal meine (hitstec, nicht falsch verstehen!):

:?: Warum? :lol:

Ja gut ich gebe zu, es ist nicht auf den ersten Blick verständlich. Aber es funkt, sogar noch ganz gut, denke ich.
Außerdem haben wir so was Ähnliches auch in Informatik durchgenommen, allerdings in JavaScript :shock: .

@Onoprienko: Dien Bsp. gibt aber nur -1er aus. :cry:
Allerdings muss ich sagen, dass deine Methode eigentlich die einfachere und die bessere ist. Du hast bei der Ausgabe nur einen Fehler gemacht: statt


Delphi-Quelltext
1:
edit1.text:=edit1.text+inttostr(zahlen[lauf]);                    

muss es natürlich so heißen:


Delphi-Quelltext
1:
edit1.text:=edit1.text+inttostr(lauf);                    


Moderiert von user profile iconKlabautermann: Code- durch Delphi-Tags ersetzt


hitstec - Mi 17.07.02 17:28

Zitat:
@histec: für mich schaut deine Lösung ziemlich nach meiner Beschreibung aus , aber is ja egal, ich wollt halt keinen ganzen Code schreiben, da nic ja auch noch was selber machen sollte,

Naja nicht ganz. Bei dir stht irgendwas mit solange bis irgendetwas -1 ist, und so. Die Beschreibung habe ich auch nach dem 10. mal nicht kapiert :oops: . Vielleicht bin ich wirklich dumm. :shock:

:lol:

Zitat:
aber nun der eigentliche Grund dieses Posts:
wozu werden bei histec's Lösung die Zahlen sortiert, da hätte man beim Lotto shr viel höhere Gewinnchancen!!!

Also ich spiele kein Lotto, habe deshalb keine Ahnung. Wir haben die Lotozahlen in Informatik immer sortiert.


1Stein - Sa 15.02.03 23:30

bin kein Delphi Progger bzw erst neu beim proggen mit delpi aber beim lotto werden die Zahlen sortiert :mrgreen: und zwar von klein :arrow: groß 8)