C++ Übung Lottoprg



  • Hallo alle zusammen,
    Ich versuche gerade c++ zu lernen mit dem Buch C++ der Einstig.
    Jedenfalls ich sollte nach der aufgabe im buch ein lotto programm schreiben
    und es werden auch zufalls zahlen ausgeben,aber das sortieren funktioniert nicht so wie ich mir das vorstelle hab dann in die lösungen geschaut doch es funktoniert immer noch nicht.
    Hier erstmal der Code:

    #include <iostream>
    #include<stdlib.h>
    #include<time.h>
    
    using namespace std;
    const int lottoKugeln = 7;
    const int lottoMax = 49;
    bool neueZahl = 1 ;
    
    int main()
    {
        int x,y;
        int help ;
        int lotto [lottoKugeln];
    
               srand(time(0));
    
       for (x=0;x<lottoKugeln;x++)
        {
            do
            {
                lotto[x] = rand() %lottoMax +1;
                for (y=0;y<lottoKugeln;y++)
                {
                    lotto[y] = rand() %lottoMax +1;
                    if(lotto[x]==lotto[y])
                    {
                        neueZahl = false;
    
                    }
                }
                cout << *lotto<< endl  ;
                cout <<  endl;
            }while(neueZahl==true);
    
        }
    
        //sortienen
    
            for(x=lottoKugeln-1;x>0;x--)
            {
    
                    if (lotto[x]>lotto[x++])
                    {
                        lotto[x]=help;
                        lotto[x]=lotto[x++];
                        lotto[x++]=help;
                    }
    
                }
    
        for(x=0;x<lottoKugeln;x++)
            {
                cout <<lotto[x] << "-";
                cout << endl;
            }
        return 0;
    }
    

    Fehlermeldung: operation on 'x' may be undefine
    operation on 'help' may be unintilaze in this function

    vieleicht habt ihr ja ne idea und\oder vorschläge den code effizenter zu gestalten



  • Hantiere nicht selbst mit irgendwelchen Algorithmen wie "sortieren", die es schon in fertig gibt.
    Wichtig: nimm nicht eine Variable (hier: x) für mehrere Dinge. Halte den Scope kurz!
    Und vermeide sowas hier, wo man nachdenken muss, was hier passiert oder ob das undefiniertes Verhalten ist:

    lotto[x]=lotto[x++];
    

    Tipp: Wenn du den Operator ++ oder -- nutzt, dann benutze die Variable nur genau einmal, nicht mehrfach.

    So, wie du anfängst, scheint das Buch nicht mit der STL anzufangen. Ich empfehle jetzt mal einfach "C++ Primer" und "Der C++-Programmierer".

    Für ein 6 aus 49 könnte man zum Bleistift so vorgehen:

    #include <iostream>
    #include <random>
    #include <set>
    
    const int lottoKugeln = 6;
    const int lottoMax = 49;
    
    int main()
    {
        std::set<int> gezogen;
        std::mt19937 rng(std::random_device{}());
        while (gezogen.size() < lottoKugeln) {
            auto neu = std::uniform_int_distribution<int>(1, lottoMax)(rng);
            gezogen.insert(neu);        
        }
        for (auto zahl : gezogen) {
            std::cout << zahl << '\n';
        }
    }
    


  • Deine Sortier-Schleife ist Grütze.

    Jokoker schrieb:

    operation on 'help' may be unintilaze in this function

    Du benutzt die Variable zum lesen (rechts vom 🙂 ohne ihr vorher einen Wert zugewiesen zu haben.

    Jokoker schrieb:

    operation on 'x' may be undefine

    die Opereatoren ++ und -- verändern die Variable.
    Das ist etwas anderes als +1 oder -1
    Insbesondere hat der Ort der Operatoren (vor oder nach dem Variablennamen) eine wichtige Bedeutung.

    Wenn das noch bei der Zählvariable der Schleife passiert, kommt da etwas stark durcheinander.

    Teile dein Problem in Funktionen auf.


Log in to reply