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 keinp
, aberziehungen
undanzahl
.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.