Problem mit Eingabe in einen 2D Vektor



  • Hallo erstmal. Ich mache zum Üben für die Klausur gerade ein paar Übungsaufgaben und bin auf ein Problem gestoßen bei welchen ich den Fehler nicht finde.
    Zur Aufgabe: Man soll ein Lottospiel als Klasse lotto erstellen. Dabei soll vom Benutzer die Anzahl der Spieler, die Anzahl der Tipps und die Anzahl der möglichen Zahlen eingegeben werden. Es sollen Vektoren genutzt werden.
    Folgendes habe ich:
    Die header Datei für die Klasse Lotto:

    #ifndef LOTTO_H
    #define LOTTO_H
    #include <vector>
    #include <iostream>
    using namespace std;
    
    class lotto
    {
    public:
        lotto();
        lotto(int anzahlSpieler, int anzahlZuZiehendeKarten, int anzahlMoeglicheKarten);
    
        void setzen();
        void ziehen();
    
    private:
    
        vector < vector<int> > spieler;
        vector<int> gezogeneZahlen;
        int anzahlSpieler;
        int anzahlZuZiehendeKarten;
        int anzahlMoeglicheKarten;
    };
    
    #endif // LOTTO_H
    
    Die header dazu:
    
    ```cpp
    #include "lotto.h"
    
    
    lotto::lotto()
    {
    
    }
    
    lotto::lotto(int anzahlSpieler, int anzahlZuZiehendeKarten, int anzahlMoeglicheKarten)
    {
        this->anzahlSpieler = anzahlSpieler;
        this->anzahlZuZiehendeKarten = anzahlZuZiehendeKarten;
        this->anzahlMoeglicheKarten = anzahlMoeglicheKarten;
    
        vector <vector<int>> spieler(anzahlSpieler, vector<int> (anzahlZuZiehendeKarten)); //Vektor mit anzahlSpieler stellen welche zuZiehendeKarten als größe haben
    }
    
    void lotto::setzen()
    {
     int eingabe;
        for(int i=0;i<anzahlSpieler;i++)
        {
            cout << "Spieler " << i << " ziehen: " << endl;            //für alle spieler alle Zahlen(Tipps) einlesen
            for(int j=0;j<anzahlZuZiehendeKarten;j++) {
                cout << "Zahl " << j << " :";
                cin >> eingabe;
                spieler[i][j] = eingabe;                                         //HIER DER FEHLER??????
                cout << endl;
            } cout << endl;
        }
    
    }
    
    void lotto::ziehen()
    {
        cout << "Gezogene Zahlen: ";
        for(int i=0;i<anzahlZuZiehendeKarten;i++) {
            int r = rand()%anzahlMoeglicheKarten;
            gezogeneZahlen.push_back(r);
            cout << gezogeneZahlen[i] << " ";
        }   cout << endl;
    }
    
    
    In der main wird lotto l; erstellt und l.setzen() und l.ziehen() aufgerufen.
    
    Die Methode ziehen funktioniert.
    Das Problem liegt bei der Methode setzen.
    Wenn ich das Programm ausführe lässt es mich die erste Zahl einlesen und bricht dann ab. Ich glaube das Problem liegt in der MEthode setzen() und bei der Vektor deklaration, habe aber keine Idee was falsch sein könnte bzw. wie man es verbessern könnte.
    
    Wäre für eure Hilfe sehr dankbar :)
    Gruß Dude
    


  • @TheDude wie genau erstellst du lotto l denn?
    Als Tipp, mach dich mit einem Debugger und vertraut, dann kannst du die Step für Step angucken, was passiert.



  • spieler in Zeile 44 ist eine lokale Variable.



  • @Schlangenmensch Danke, das hab ich bereits. Alles läuft normal, sobal man die Eingabe macht beendet sich das Programm in Zeile 56 der cpp Datei.



  • @manni66 Danke für die ANtwort. Hättest du eine Idee wie man das Problem lösen könnte?



  • @TheDude sagte in Problem mit Eingabe in einen 2D Vektor:

    @manni66 Danke für die ANtwort. Hättest du eine Idee wie man das Problem lösen könnte?

    Keine lokale Variable verwenden?

    Initialisierungsliste vs. Konstruktor Body



  • @manni66 Vielen Dank. Hab es jetzt hinbekommen 😃


Log in to reply