Lotto-Quiktipp

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Lupus.

    Lotto-Quiktipp

    Hallo,

    Also eines vorweg, ich bin noch ziemlich neu in der VB-Programmierung, hab's erst ein Semster lang in der Schule, also bitte so erklären dass ich es auch verstehe :D

    Hab ein kleines Problem: Ich muss einen "Lotto-Quicktipp" programmieren.
    Das heißt, einfach 6 Zufallszahlen von 1-45 generieren und anzeigen lassen. Soweit kein Problem, aber mein Problem ist, wie ich doppelte Zufallszahlen verhindere?!
    Ich könnte es schon mit etlichen If-Funktionen machen, wo ich jede Zahl mit jeder anderen Zahl vergleiche und bei Bedarf eine neue generieren lasse. Allerdings müsste das ganze auch in eine Schleife eingebaut werden, falls es wirklich passieren sollte dass noch einmal eine Zahl generiert wir, die schon vorhanden.
    Alles in allem, viel zu kompliziert und viel zu lang, diese Methode!
    Da muss es doch eine einfachere Lösung geben, oder?

    Danke schonmal für eure Hilfe :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „rammi182“ ()

    Hi,
    erst mal wilkommen im Forum!
    Dein Problem kannst du so lösen:

    VB.NET-Quellcode

    1. Dim Zahlen(5) As Integer, Text As String = ""
    2. Randomize()
    3. For a As Integer = 0 To 5
    4. Dim c As Boolean = True
    5. Do
    6. Zahlen(a) = Int(Rnd() * 49) + 1
    7. If a > 0 Then
    8. c = True
    9. For b As Integer = 0 To a - 1
    10. If Zahlen(a) = Zahlen(b) Then c = False : Exit For
    11. Next
    12. End If
    13. Loop Until c = True
    14. Text &= IIf(Text = "", "", ", ") & Zahlen(a).ToString
    15. Next

    Sollte klappen!

    Lupus schrieb:

    Hi,
    erst mal wilkommen im Forum!
    Dein Problem kannst du so lösen:

    VB.NET-Quellcode

    1. Dim Zahlen(5) As Integer, Text As String = ""
    2. Randomize()
    3. For a As Integer = 0 To 5
    4. Dim c As Boolean = True
    5. Do
    6. Zahlen(a) = Int(Rnd() * 49) + 1
    7. If a > 0 Then
    8. c = True
    9. For b As Integer = 0 To a - 1
    10. If Zahlen(a) = Zahlen(b) Then c = False : Exit For
    11. Next
    12. End If
    13. Loop Until c = True
    14. Text &= IIf(Text = "", "", ", ") & Zahlen(a).ToString
    15. Next

    Sollte klappen!
    Leider verstehe ich diese Lösung nicht ganz (wie gesagt bin kompletter Neuling), mein bisheriger Code sieht folgendermaßen aus, vllt könnt ihr mir dann konkreter helfen:

    VB.NET-Quellcode

    1. Private Sub btnTipp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTipp.Click
    2. Dim Zufall As New Random
    3. Dim Zahl1, Zahl2, Zahl3, Zahl4, Zahl5, Zahl6 As Integer
    4. Zahl1 = Zufall.Next(1, 46)
    5. Zahl2 = Zufall.Next(1, 46)
    6. Zahl3 = Zufall.Next(1, 46)
    7. Zahl4 = Zufall.Next(1, 46)
    8. Zahl5 = Zufall.Next(1, 46)
    9. Zahl6 = Zufall.Next(1, 46)
    10. txtTipp.Text = CStr(Zahl1) & ", " & CStr(Zahl2) & ", " & CStr(Zahl3) & ", " & CStr(Zahl4) & ", " & CStr(Zahl5) & ", " & CStr(Zahl6)
    11. End Sub



    steffifant schrieb:

    Achtung jetzt spricht der Laie :)

    Ich würde es über ein Array machen. Dieses durch eine Schleife befüllen und nach jedem Füllen abfragen, ob die Zahl im Array schon vorhanden ist.

    Hilft das?
    Leider haben wir noch nicht gelernt was Arrays sind und wie man sie benutzt/erstellt.

    Danke für eure Hilfe... :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „rammi182“ ()

    ok, kein Problem, ich erkläre dir mal meinen Code:
    Arrays sind Variablen, die mehrere Werte beinhalten können. In meinem Beispiel habe ich die mit

    VB.NET-Quellcode

    1. Dim Zahlen(5) As Integer

    definieren. Zahlen hat dann dann 6 Werte (0,1,2,3,4,5). Die kannst du dann z.B. mit

    VB.NET-Quellcode

    1. Zahlen(3) = 3

    belegen.
    Das

    VB.NET-Quellcode

    1. Int(Rnd() * 49) + 1

    ist genau das gleiche wie dein Zufallsteil, nur beim Lotto gibts doch normalerweise 49 Zahlen, oder? ^^ Randomize leitet das bei mir ein, kannst du dir aber bei deiner Version sparen.
    Bei meinem Code werden dann mit einer For-Schleife alle 6 Zahlen mit Werten besetzt. Aber bevor die nächste Zahl drankommt, wiederholt sich die Zahl-Belegung so lange durch eine Do-Schleife, bis die Zahl noch nicht vorkommt, das wird wieder mit einer For-Schleife überprüft.
    Hoffe du hast meinen Code jetzt verstanden kannst dir was abgucken :)
    Hey Lupus,

    Herzlichen Dank, funktioniert wunderbar :thumbsup:
    Und jetzt wo ich das mit den Arrays verstanden habe, hab ich auch einige andere Projekte von mir deutlich vereinfachen können.

    nur beim Lotto gibts doch normalerweise 49 Zahlen, oder?
    Bei uns im schönen Österreich kommen wir mit 45 aus :D

    Also nochmal danke und auch ein Lob an das Forum, hab mich ein bisschen umgeschaut und sieht wirklich ganz anständig aus. Und schnell geantwortet wird auch :thumbup:

    Werd mich in Zukunft wenn ich wieder mal bei einem Programmierbeispiel nicht weiter komme (was sicher der Fall sein wird ^^ ) wieder hier melden...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „rammi182“ ()

    Hi,

    @rammi182
    Erstmal herzlich willkommen.

    Du solltest aber mal die Boardregeln lesen!!
    - Dort steht unter anderem das Du bitte ERST die SuFu benutzen sollst. Dieses Thema hatten wir vor ca. 2-3 Wochen schon einmal!
    - Dort steht auch das Dein Avatar NICHT(!!) animiert sein darf. Also bitte schnellstens ändern! Danke.

    Und zitiere bitte NICHT die ganzen Post's Deiner Vorredner, sondern nur den betreffenden Teil. Das fördert die Übersichtlichkeit!


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de

    LaMa5 schrieb:

    Erstmal herzlich willkommen.

    Du solltest aber mal die Boardregeln lesen!!
    - Dort steht unter anderem das Du bitte ERST die SuFu benutzen sollst. Dieses Thema hatten wir vor ca. 2-3 Wochen schon einmal!
    - Dort steht auch das Dein Avatar NICHT(!!) animiert sein darf. Also bitte schnellstens ändern! Danke.

    Und zitiere bitte NICHT die ganzen Post's Deiner Vorredner, sondern nur den betreffenden Teil. Das fördert die Übersichtlichkeit!
    Hey,

    Also ich habe die Suchfunktion benutzt und auch einige Beiträge die in diese Richtung gehen gefunden, aber leider keinen der wirklich EXAKT mein Thema behandelt. (Falls ich wirklich etwas übersehen habe, mein Fehler)

    Dass mitm Avatar hab ich nicht gewusst (oder anscheinend überlesen :D ), werds innerhlab der nächsten 5 Minuten ändern...

    Ich habe, meiner Meinung nach immmer nur den betreffenden Teil zitiert, war halt meist lang der relevante Teil un so unübersichtlich wird's dadruch wirklich auch wieder nicht...

    LaMa5 schrieb:

    Und zitiere bitte NICHT die ganzen Post's Deiner Vorredner, sondern nur den betreffenden Teil. Das fördert die Übersichtlichkeit!

    hast du den Teil auch gelesen^^? Außerdem brauchst du nicht den Beitrag, der direkt obendrüber steht zu zitieren