Die letzten 10 Beiträge |
Progger |
Hat sich erledigt. |
progger |
Was hast du geändert ?
Nur damit ich es weiss und daraus lernen kann. |
eulerscheZahl |
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
|
#pragma once
#include <string>
#include <iostream>
using namespace std;
class CTeam{
private:
string m_teamName;
unsigned int m_winsTotal; //Initialisierung kommt in die .cpp, nicht in den header
unsigned int m_equalTotal;
unsigned int m_lostTotal; //die Zeile hat gefehlt
unsigned int m_goalsScoredTotal;
unsigned int m_goalsReceivedTotal;
public:
CTeam(string name); //keine default Werte im Header
string getName();
void addResult( unsigned int goalsScored, unsigned int goalsReceived);
unsigned int getTotalPoints() const;
friend ostream& operator << (ostream& out , CTeam const& rop); //du hattest >>
bool operator < (const CTeam& rop) const;
}; |
|
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
|
#include <iostream>
#include <string>
#include "CTeam.h"
using namespace std;
CTeam::CTeam(string name = "NoName") {
m_teamName = name;
m_goalsScoredTotal = 0;
m_goalsReceivedTotal = 0;
m_winsTotal = 0;
m_equalTotal = 0;
m_lostTotal = 0;
}
string CTeam::getName() {
return m_teamName;
}
void CTeam::addResult(unsigned int goalsScored, unsigned int goalsReceived){
if (goalsScored > goalsReceived) {
m_winsTotal++;
}
if (goalsReceived > goalsScored) {
m_lostTotal++;
}
if (goalsReceived == goalsScored) {
m_equalTotal++;
}
m_goalsScoredTotal += goalsScored;
m_goalsReceivedTotal+= goalsReceived;
};
unsigned int CTeam::getTotalPoints() const {
return m_winsTotal*3 + m_equalTotal*1;
};
ostream& operator << (ostream &out, const CTeam &rop) {
out<<"CTeam@" << rop.m_winsTotal<< "Spiele gewonnen " << " , " << rop.m_equalTotal << " Spiele unentschieden"<< endl;
out << "CTeam@"<< rop.m_goalsScoredTotal << " Tore erzielt " <<" , " << rop.m_goalsReceivedTotal << " " << " Tore kassiert "<< endl;
};
bool CTeam::operator < (const CTeam& rop) const {
//es wird true zurückgegeben, wenn der linke Operand mehr Punkte hat als der rechte Operand
if (this->getTotalPoints() > rop.getTotalPoints()) return true;
//bei gleich vielen Punkten entscheidet die Tordifferenz
if (this->getTotalPoints() == rop.getTotalPoints()) {
int team1Diff = this->m_goalsScoredTotal - this->m_goalsReceivedTotal;
int team2Diff = rop.m_goalsScoredTotal - rop.m_goalsReceivedTotal;
//Wenn der linke Operand die bessere (höhere) Tordifferenz hat als der rechte, wird ebenfalls true zurückgegeben
if (team1Diff > team2Diff) return true;
}
//in allen anderen Fällen wird false zurückgegeben
return false;
} |
|
|
progger |
Es werden mir aber immer noch fehler angezeigt wie ich gerade sehe:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
|
#define CTEAM_H_
#include <string>
#include <iostream>
using namespace std;
class CTeam{
private:
string m_teamName;
unsigned int m_winsTotal; //Initialisierung kommt in die .cpp, nicht in den header
unsigned int m_equalTotal;
unsigned int m_lostTotal; //die Zeile hat gefehlt
unsigned int m_goalsScoredTotal;
unsigned int m_goalsReceivedTotal;
public:
CTeam(string name); //keine default Werte im Header
string getName();
void addResult( unsigned int goalsScored, unsigned int goalsReceived);
unsigned const int getTotalPoints();
friend ostream& operator << (ostream& out , CTeam const& rop); //du hattest >>
bool operator < (CTeam const& rop);
};
|
|
cpp
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
|
#include <iostream>
#include <string>
#include "CTeam.h"
using namespace std;
CTeam::CTeam(string name = "NoName") {
m_teamName = name;
m_goalsScoredTotal = 0;
m_goalsReceivedTotal = 0;
m_winsTotal = 0;
m_equalTotal = 0;
m_lostTotal = 0;
}
string CTeam::getName() {
return m_teamName;
}
void CTeam::addResult(unsigned int goalsScored, unsigned int goalsReceived){
if (goalsScored > goalsReceived) {
m_winsTotal++;
}
if (goalsReceived > goalsScored) {
m_lostTotal++;
}
if (goalsReceived == goalsScored) {
m_equalTotal++;
}
m_goalsScoredTotal += goalsScored;
m_goalsReceivedTotal+= goalsReceived;
};
unsigned const CTeam:: getTotalPoints(){
return m_winsTotal*3 + m_equalTotal*1;
};
ostream& operator << (ostream &out, const CTeam &rop) {
out<<"CTeam@" << rop.m_winsTotal<< "Spiele gewonnen " << " , " << rop.m_equalTotal << " Spiele unentschieden"<< endl;
out << "CTeam@"<< rop.m_goalsScoredTotal << " Tore erzielt " <<" , " << rop.m_goalsReceivedTotal << " " << " Tore kassiert "<< endl;
};
bool CTeam::operator < (CTeam &rop) {
//es wird true zurückgegeben, wenn der linke Operand mehr Punkte hat als der rechte Operand
if (this->getTotalPoints() > rop.getTotalPoints()) return true;
//bei gleich vielen Punkten entscheidet die Tordifferenz
if (this->getTotalPoints() == rop.getTotalPoints()) {
int team1Diff = this->m_goalsScoredTotal - this->m_goalsReceivedTotal;
int team2Diff = rop.m_goalsScoredTotal - rop.m_goalsReceivedTotal;
//Wenn der linke Operand die bessere (höhere) Tordifferenz hat als der rechte, wird ebenfalls true zurückgegeben
if (team1Diff > team2Diff) return true;
}
//in allen anderen Fällen wird false zurückgegeben
return false;
}
|
|
Description Resource Path Location Type
candidate is: bool CTeam::operator<(const CTeam&) CTeam.h /CTeam line 32 C/C++ Problem
Member declaration not found CTeam.cpp /CTeam line 44 Semantic Error
prototype for 'bool CTeam::operator<(CTeam&)' does not match any in class 'CTeam' CTeam.cpp /CTeam line 44 C/C++ Problem
no return statement in function returning non-void [-Wreturn-type] CTeam.cpp /CTeam line 43 C/C++ Problem
No return, in function returning non-void CTeam.cpp /CTeam line 39 Code Analysis Problem
Ich verstehe es nicht warum? |
progger |
Alles klar danke .
Bis später |
eulerscheZahl |
Auch nach mehreren Jahren würde ich nicht behaupten, dass ich das perfekt kann.
Und da hilft nur üben. Bestimmte Muster treten immer wieder auf, die kannst du irgendwann blind eintippen. |
progger |
Danke für deine Hilfe . Jetzt werde ich mich mal zum nächsten Aufgabengeil ans üben machen .
Bei Problemen melde ich mich wieder . Wie lange hast du denn gebraucht um programmieren so gut zu lernen ? |
eulerscheZahl |
Ich habe dir den Wortlaut der Angabe nochmal abgetippt.
Das ist fast schon malen nach Zahlen.
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
|
bool CTeam::operator < (CTeam &rop) {
//es wird true zurückgegeben, wenn der linke Operand mehr Punkte hat als der rechte Operand
if (this->getTotalPoints() > rop.getTotalPoints()) return true;
//bei gleich vielen Punkten entscheidet die Tordifferenz
if (this->getTotalPoints() == rop.getTotalPoints()) {
int team1Diff = this->m_goalsScoredTotal - this->m_goalsReceivedTotal;
int team2Diff = rop.m_goalsScoredTotal - rop.m_goalsReceivedTotal;
//Wenn der linke Operand die bessere (höhere) Tordifferenz hat als der rechte, wird ebenfalls true zurückgegeben
if (team1Diff > team2Diff) return true;
}
//in allen anderen Fällen wird false zurückgegeben
return false;
} |
|
|
progger |
In welcher Funktion muss ich denn die Torrdifferenz Berechnung einbauen ?
In addResult ? |
eulerscheZahl |
code: |
1:
|
if((this->getTotalPoints()== rop.getTotalPoints())&&(team1Diff>team2Diff ) ){ |
|
Hier fragst du gleich die Tordifferenz ab, ohne sie vorher berechnet zu haben. (Zeile 2 und 3 zählt nicht. Das muss in der Funktion stehen).
Dann berechnest du die Differenzen, um unabhängig vom Ergebnis true zurückzugeben.
Ansonsnten gibst du false zurück.
Im folgenden Code, der die erreicht wird (Funktion bereits verlassen) gibst du nochmal false zurück.
Du vergisst den Fall, dass aufgrund der erreichten Punkte true zurückgegeben wird. |
Es sind weitere Beiträge zu diesem Thema vorhanden. Klicken Sie hier, um sich alle Beiträge anzusehen. |
|
|