Problem mit 2D Vektor


Hali Hallo,
Ich habe da ein kleines Problem bezüglich einer Übungsaufgabe:
-Man soll ein kleines Lotteriespiel erstellen. Im Konstruktor sollen die Anzahl der Spieler, der zu ziehenden zahlen und der Zalenbereich angegeben werden
-3 Methoden sollen erstellt werden:
-->setzen, welche von allen Spielern die Eingabe(Tipps) holt
-->ziehen, welche die Zahlen zieht und ausgibt

Dabei soll mit Vektoren gearbeitet werden.

Ich habe folgendes:
lotto.h
Code:
#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
lotto.cpp
Code:
#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>> list(anzahlSpieler, vector<int> (anzahlZuZiehendeKarten)); //Vektor mit anzahlSpieler stellen welche zuZiehendeKarten als größe haben
}


void lotto::setzen()
{


    for(int i=0;i<spieler.size();i++)
    {
        cout << "Spieler " << i << " ziehen: " << endl;            //für alle spieler alle Zahlen(Tipps) einlesen
        for(int j=0;j<spieler[i].size();j++) {
            cout << "Zahl " << j << " :";
            int eingabe;
            cin >> eingabe;
            spieler[i][j] = eingabe;
            cout << endl;
        } cout << endl;
    }


}


void lotto::ziehen()
{
    cout << "Gezogene Zahlen: ";
    for(int i=0;i<anzahlZuZiehendeKarten;i++) {             //Zahlen ziehen und ausgeben
        gezogeneZahlen[i] = rand()%anzahlMoeglicheKarten;
        cout << gezogeneZahlen[i] << " ";
    }   cout << endl;
}
Die main:
Code:
#include <iostream>
#include "lotto.h"
#include <vector>
using namespace std;


int main()
{


    lotto l(2,5,20);
    l.setzen();
    l.ziehen();


    return 0;
}
Das Problem ist, wenn man das Programm ausführt. Dann erscheint in der Konsole 'gezogene Zahlen: ' und das Programm beendet sich.
Ich hab nach dem Fehler gesucht aber finde ihn einfach nicht...
 
Ich habe noch etwas weiter gefeilt.
So sieht es jetzt aus:
header:
Code:
#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
cpp
Code:
#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;
            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;
}
main
Code:
#include <iostream>
#include "lotto.h"
#include <vector>
using namespace std;


int main()
{


    lotto l(2,5,20);
    l.setzen();
  //  l.ziehen();


    return 0;
}
Die Methode ziehen funktioniert jetzt.
Bei der Methode setzen wird die erste Zahl eingelesen und das Programm beendet sich. Heir finde ich dein Fehler einfach nicht...
 

Neue Beiträge