Laden...

Wie kann man Lotto: 6 aus 49 mit Rekursionen lösen?

Erstellt von darby vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.498 Views
Thema geschlossen
D
darby Themenstarter:in
5 Beiträge seit 2019
vor 5 Jahren
Wie kann man Lotto: 6 aus 49 mit Rekursionen lösen?

Hallo 😃

Wir hatten in der Berufsschule eine Aufgabe bekommen ein Lotto Programm zu schreiben,
welches alle möglichen Kombinationen für 6 aus 49 ausgibt.


            public void AlleKombinationenAusgeben()
            {
                Console.Title = "Lotto: 6 aus 49";

                /* Try-Catch Block */
                try
                {
                    for (int a = 1; a < 45; a++)
                    {
                        for (int b = a + 1; b < 46; b++)
                        {
                            for (int c = b + 1; c < 47; c++)
                            {
                                for (int d = c + 1; d < 48; d++)
                                {
                                    for (int e = d + 1; e < 49; e++)
                                    {
                                        for (int f = e + 1; f < 50; f++)
                                        {                                           
                                            zaehler++;
                                            neuer_zaehler = zaehler.ToString("N0");
                                            Console.WriteLine(a + " " + b + " " + c + " " + d + " " + e + " " + f + " | -> " + neuer_zaehler);
                                            if (zaehler == max_kombinationen)
                                            {
                                                Console.ForegroundColor = ConsoleColor.Green;
                                                Console.WriteLine($"Es wurden {neuer_zaehler} Kombinationen wurden erstellt!");
                                                Console.ReadKey();
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Fehler: " + ex);
                    Console.ReadKey();
                }
        }
   }

Das ist mein Code.
Funktionieren tut er auch nur hat der Lehrer gesagt wir sollen das mal mit Rekursiven Programmieren versuchen. Nur habe ich ehrlich gesagt absolut keine Ahnung wie ich das angehen soll 😕
Hoffe ihr könnt mir etwas helfen

Lg, darby

709 Beiträge seit 2008
vor 5 Jahren

Hallo und willkommen darby,

du könntest mal schauen, was für Parameter du hast und entsprechend versuchen deine Methode aufzubauen.

Ich weiß jetzt nicht, wie sehr du in die Richtung eines Ansatzes geschubst werden möchtest.
Deshalb halte ich es erstmal recht vage und würde dann evtl. später spezifischer werden, falls das noch nicht genug hilft.

D
darby Themenstarter:in
5 Beiträge seit 2019
vor 5 Jahren

Was mir gerade einfällt...

Ich habe noch eine etwas Dynamischere Methode

for (int i = 0; i < ziehungen; i++)
                    {

                        for (int j = 0; j < wieviel; j++)
                        {

                            /* Neue Zahlen werden hier Zufällig generiert */

                            int neuezahlen = generator.Next(1, von + 1);

                            /* Überprüfen ob eine Zahl bereits vorhanden ist -> Wenn ja wird eine neue gezogen */
                            while (zahlen.Contains((neuezahlen)))
                            {
                                neuezahlen = generator.Next(1, von + 1);
                            }

                            zahlen[j] = neuezahlen;

                        }

                        int[] filterzahlen = zahlen.Distinct().ToArray();

                        /* Ausgeben der Zahlen */
                        zaehlerEigenesSpiel++;
                        Console.WriteLine((string.Join(" ", filterzahlen) + " | -> " + zaehlerEigenesSpiel));

                        /* Wenn der zaehlerEigenesSpieler die Anzahl an Ziehungen erreicht hat stoppt er und man bekommt eine Nachricht */
                        if (zaehlerEigenesSpiel == ziehungen)
                        {

                            Console.ForegroundColor = ConsoleColor.Green;
                            Console.WriteLine($"Es wurde {ziehungen}x gezogen von dem Spiel {ersteZahl} aus {zweiteZahl}");
                            Console.ReadKey();
                            Environment.Exit(1);
                        }
                    }

Wäre es nicht sogar möglich die andere Methode da irgendwie einzubauen?

D
darby Themenstarter:in
5 Beiträge seit 2019
vor 5 Jahren

Hmm.. als ich mir deinen Tipp durchgelesen habe hatte ich schon mir denken wie es geht
nur mangelt es bei mir an der Umsetzung 😕

709 Beiträge seit 2008
vor 5 Jahren

Welche Gedanken hattest du denn und wo sitzt der Knoten im Kopf?

D
darby Themenstarter:in
5 Beiträge seit 2019
vor 5 Jahren

Ich hätte es so machen wollen das ich in der der Dynamischeren Methode eine If-Abfrage eingebaut hätte die geschaut ob ein Wert einfach auf 1 oder 2 steht und bei 1 hätte ich dann eben das so gemacht das er sich 6 Zahlen ( 1 2 3 4 5 6 ) nimmt die 6 bis 49 hochzählt und dann die 6 auf 7 stellt und die 5 auf 48 hochzählt und immer so weiter 😕

Aber das klingt irgendwo sehr nach viel zu vielen Abfragen...

16.806 Beiträge seit 2008
vor 5 Jahren

Das ist mein Code.

Bist Du Dir sicher? Den Code findet man so sofort im Internet, der aber nicht funktioniert.
Code evtl. einfach nur von dort kopiert, als Deinen verkauft und wir sollen ihn nun fixen? 😉

709 Beiträge seit 2008
vor 5 Jahren

War nicht ein rekursiver Ansatz gesucht?

D
darby Themenstarter:in
5 Beiträge seit 2019
vor 5 Jahren

Das ist mein Code.

Bist Du Dir sicher? Den Code findet man so sofort im Internet, der aber nicht funktioniert.
Code evtl. einfach nur von dort kopiert, als Deinen verkauft und wir sollen ihn nun fixen? 😉

Ich bin mir so ziemlich sicher das ich den nicht irgendwoher kopiert habe..

16.806 Beiträge seit 2008
vor 5 Jahren

D.h. Du bist mit identischem Code auch in anderen Foren unterwegs, um nach Hilfe zu fragen - und selbst dort mehrfach? :evil:

Das verstößt gegen die Forenregeln und jede Art von Anstand. Das ist nicht nur unhöflich, das ist unverschämt. ⚠
Siehe Cross Post in [Hinweis] Wie poste ich richtig?

Daher ist hier damit auch hier zu 🙂
PS: danke an die Melder! 👍

Thema geschlossen