myCSharp.de - DIE C# und .NET Community (https://www.mycsharp.de/wbb2/index.php)
- Entwicklung (https://www.mycsharp.de/wbb2/board.php?boardid=3)
-- Grundlagen von C# (https://www.mycsharp.de/wbb2/board.php?boardid=88)
--- Wie kann man Lotto: 6 aus 49 mit Rekursionen lösen? (https://www.mycsharp.de/wbb2/thread.php?threadid=121499)


Geschrieben von darby am 23.01.2019 um 11:05:
  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.

C#-Code:
            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


Geschrieben von pinki am 23.01.2019 um 11:28:
 
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.


Geschrieben von darby am 23.01.2019 um 11:46:
 
Was mir gerade einfällt...

Ich habe noch eine etwas Dynamischere Methode

C#-Code:
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?


Geschrieben von darby am 23.01.2019 um 12:06:
 
Hmm.. als ich mir deinen Tipp durchgelesen habe hatte ich schon mir denken wie es geht
nur mangelt es bei mir an der Umsetzung :/


Geschrieben von pinki am 23.01.2019 um 12:10:
 
Welche Gedanken hattest du denn und wo sitzt der Knoten im Kopf?


Geschrieben von darby am 23.01.2019 um 12:22:
 
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...


Geschrieben von Abt am 23.01.2019 um 13:04:
 
Zitat von darby:
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? ;-)


Geschrieben von pinki am 23.01.2019 um 13:11:
 
War nicht ein rekursiver Ansatz gesucht?


Geschrieben von darby am 23.01.2019 um 13:26:
 
Zitat von Abt:
Zitat von darby:
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..


Geschrieben von Abt am 23.01.2019 um 14:10:
 
D.h. Du bist mit identischem Code auch in  anderen Foren unterwegs, um nach Hilfe zu fragen - und selbst  dort mehrfach? Teufel

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

Daher ist hier damit auch hier zu :-)
PS: danke an die Melder! Daumen hoch


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 26.01.2020 04:11