Brauche Hilfe



  • Hallo zusammen,

    habe folgende Programmteile geschrieben.

    // lottoziehung.cpp
    
    #include "lotto.hpp"
    #include <iostream>
    #include <ctime>
    #include <cstdlib>
    
    using namespace std;
    
    int main() {
    	Ziehungsverwaltung z1(3), z2(2);
    
    	cout << "Ziehungsverwaltung z1:" << endl << z1;
    	cout << "Ziehungsverwaltung z2:" << endl << z2;
    
    	cout << "Setze z1=z2" << endl << endl;
    	z1 = z2;
    
    	cout << "Ziehungsverwaltung z1:" << endl;
    	cout << z1;
    
    	cout << "Erstelle Ziehungsverwaltung z3 aus z1 mit Copy-Konstruktor" << endl << endl;
    	Ziehungsverwaltung z3(z1);
    	cout << "Ziehungsverwaltung z3:" << endl << z3;
    
    	Ziehungsverwaltung z4(2);
    	cout << "Ziehungsverwaltung z4:" << endl << z4;
    	cout << "Setze z1+=z4" << endl << endl;
    	z1 += z4;
    	cout << "Ziehungsverwaltung z1:" << endl << z1 << endl;
    
    	cout << endl;
    
    	Ziehungsverwaltung z5(1000000);
    	unsigned int tipp[] = {4,8,15,16,23,42};
    	z5.gewinn(tipp,0);
    
    /*
    Erweitern Sie das Programm so, dass am Ende solange Ziehungen wiederholt werden, bis die Zahlenkombination 1, 2, 3, 5, 8, 13 mit Superzahl 0 gezogen wird. Geben
    Sie die Anzahl der dafur noetigen Ziehungen aus. */
    
    	return 0;
    }
    
    // lotto.cpp
    
    #include <iostream>
    #include <cstdlib>
    #include <cmath>
    #include "lotto.hpp"
    
    using namespace std;
    
    Ziehung::Ziehung()
    {
    	for(int i=0; i<6; i++)
    	{
    		zahlen[i] = rand() % 49 + 1;
    	}
    }
    
    std::ostream& operator<<(ostream& os, const Ziehung& z)
    {
    	for(int j=0; j<9; j++)
    	{
    		os << z.zahlen[j] << endl;
    	}
    
    	os << "Superzahl " << z.sz << endl;
    
    	return os;
    }
    
    Ziehungsverwaltung::Ziehungsverwaltung(unsigned int k) : n(k)
    {
    	p = new Ziehung[n];
    	for(int i=0; i<n; i++)
    		p[i] = Ziehung();
    }
    
    Ziehungsverwaltung::Ziehungsverwaltung(const Ziehungsverwaltung& zv)
    {
    	n = zv.n;
    	p = new Ziehung[n];
    	for(int i=0; i<n; i++)
    		p[i] = zv.p[i];
    }
    
    Ziehungsverwaltung::~Ziehungsverwaltung()
    {
    	delete[] p;
    }
    
    Ziehungsverwaltung& Ziehungsverwaltung::operator=(const Ziehungsverwaltung& zv)
    {
    	if(this != &zv)
    	{
    		delete[] p;
    		n = zv.n;
    		p = new Ziehung[n];
    		for(int i=0; i<n; i++)
    			p[i] = zv.p[i];
    	}
    
    	return (*this);
    }
    
    Ziehungsverwaltung& Ziehungsverwaltung::operator+=(const Ziehungsverwaltung& zv)
    {
    	Ziehung *tmp;
    	tmp = new Ziehung[n];
    	for(int i=0; i<n; i++)
    		tmp[i] = p[i];
    	unsigned int ntmp = n;
    	delete[] p;
    	n += zv.n;
    	p = new Ziehung[n];
    	for(int j=0; j<(n-zv.n); j++)
    		p[j] tmp[j];
    	for(int k=(n-zv.n); k<n; k++)
    		p[k] = zv.p[k-ntmp];
    	return(*this);
    }
    
    std::ostream& operator<<(std::ostream& os, const Ziehungsverwaltung& zv)
    {
    	for(int i=0; i<zv.n; i++)
    		os << zv.p[i] << " ";
    	return os;
    }
    /* Gewinnfunktion, welche einen Tipp in Form eines entsprechenden Arrays
    und einer Superzahl ubergeben bekommt und fur alle durchgefuehrten Ziehungen
    die Gewinnklasse fuer diesen Tipp bestimmt. Dabei soll festgehalten werden, wie oft
    die jeweilige Gewinnklasse erreicht wurde und es soll eine entsprechende Uebersicht
    auf cout ausgegeben werden. */
    
    int gewinn(unsigned int tipp[6], unsigned int sz)
    {
    	int gewinn = 9;
    	for(int i=0; i<6; i++)
    	{
    		for(int j=0; j<9; j++)
    		{
    			if(zahlen[i] == tipp[j])
    			gew--;
    		}
    	}
    
    	if((gew == 2) &&(sz == sz1))
    	gew--;
    
    	return gew;
    }
    /* Eine Methode gewinnklasse_bestimmen, welche ein Array mit den sechs Zahlen
    eines Tipps sowie die Superzahl ubergeben bekommt und die Gewinnklasse fuer
    diesen Tipp bei der jeweiligen Ziehung bestimmt und zurueckgibt. */
    
    int Ziehung::gewinnklasse_bestimmen(unsigned int tipp[6], unsigned int sz1)
    {
    	int gew = 9;
    	for(int i=0; i<6; i++)
    	{
    		for(int j=0; j<9; j++)
    		{
    			if(zahlen[i] == tipp[j])
    			gew--;
    		}
    	}
    
    	if((gew == 2) && (sz == sz1))
    	gew--;
    
    	return gew;
    }
    

    und

    // lotto.hpp
    
    #include <iostream>
    #include <cstdlib>
    #include <cmath>
    
    #ifndef LOTTO_HPP
    #define LOTTO_HPP
    
    class Ziehung
    {
    	private:
    		unsigned int* zahlen;
    		unsigned int sz;
    
    	public:
    		Ziehung();
    		friend std::ostream& operator<<(std::ostream&, const Ziehung&);
    		int gewinnklasse_bestimmen(unsigned int tipp[6], unsigned int sz);
    };
    
    class Ziehungsverwaltung
    {
    	private:
    		unsigned int anzahl;
    		Ziehung *ziehungen;
    
    	public:
    		Ziehungsverwaltung(unsigned int);
    		Ziehungsverwaltung(const Ziehungsverwaltung&);
    		~Ziehungsverwaltung();
    
    		Ziehungsverwaltung& operator=(const Ziehungsverwaltung&);
    		Ziehungsverwaltung& operator+=(const Ziehungsverwaltung&);
    
    		friend std::ostream& operator<<(std::ostream&, const Ziehungsverwaltung&);
    
    		int gewinn(unsigned int tipp[6], unsigned int sz);
    };
    #endif
    

    Mein Problem ist dass bei Dev C++ viele Fehlermeldungen rauskommen.

    Gruß
    Jay



  • jay82z schrieb:

    Mein Problem ist dass bei Dev C++ viele Fehlermeldungen rauskommen.

    Dein Problem ist, dass Header und die Implementierung kaum zusammenpassen. So hat z.B. Ziehungsverwaltung kein n und kein p , aber ziehungen und anzahl .

    Die Fehlermeldungen Deines Compilers sind vielmehr die Lösung. Musst sie halt lesen.
    Das kann erstmal erschlagen, aber wenn Du oben anfängst und eine nach der anderen behebst, stellen sich viele auch als Folgefehler heraus.


Log in to reply