Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » C++ Einführung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (4): « vorherige 1 [2] 3 4 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen C++ Einführung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Im Header deklarierst du bool operator << (CTeam const& rop);, implementierst es aber nicht.

out << "CTeam@"<< m_goalsScoredTotal
muss (wie oben) rop.m_goalsScoredTotal heißen. Das gilt natürlich auch für die nächste Variable.

edit:
Laut Klassendiagramm sollte es bool operator < sein, nicht <<

__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 04.03.2016 09:45.

04.03.2016 09:43 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
progger
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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:

#ifndef CTEAM_H_
#define CTEAM_H_
#include <string>
#include <iostream>
using namespace std;


class CTeam{

private:
	string m_teamName;
	unsigned int m_winsTotal = 0;
	unsigned int m_equalTotal = 0;
	unsigned int m_goalsScoredTotal = 0;
	unsigned int m_goalsReceivedTotal = 0;

public:

	/*CTeam::*/CTeam( string name = "NoName");
	string getName();
	void addResult( unsigned int goalsScored, unsigned int goalsReceived);
    unsigned const int getTotalPoints();

    friend ostream& operator >> (ostream& out , CTeam const& rop);
    bool operator < (CTeam const& rop);








};





#endif /* CTEAM_H_ */




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:
#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;
};




Gut jetzt habe ich deutlich weniger fehler :
Description Resource Path Location Type
'm_lostTotal' was not declared in this scope CTeam.cpp /CTeam line 13 C/C++ Problem
'm_lostTotal' was not declared in this scope CTeam.cpp /CTeam line 26 C/C++ Problem
'unsigned int CTeam::m_equalTotal' is private CTeam.h /CTeam line 20 C/C++ Problem
'unsigned int CTeam::m_goalsReceivedTotal' is private CTeam.h /CTeam line 22 C/C++ Problem
'unsigned int CTeam::m_goalsScoredTotal' is private CTeam.h /CTeam line 21 C/C++ Problem
'unsigned int CTeam::m_winsTotal' is private CTeam.h /CTeam line 19 C/C++ Problem
after previous specification in 'CTeam::CTeam(std::string)' [-fpermissive] CTeam.h /CTeam line 26 C/C++ Problem
default argument given for parameter 1 of 'CTeam::CTeam(std::string)' [-fpermissive] CTeam.cpp /CTeam line 7 C/C++ Problem
Symbol 'm_lostTotal' could not be resolved CTeam.cpp /CTeam line 13 Semantic Error
Symbol 'm_lostTotal' could not be resolved CTeam.cpp /CTeam line 26 Semantic Error
within this context CTeam.cpp /CTeam line 40 C/C++ Problem
within this context CTeam.cpp /CTeam line 42 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
non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default] CTeam.h /CTeam line 19 C/C++ Problem
non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default] CTeam.h /CTeam line 20 C/C++ Problem
non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default] CTeam.h /CTeam line 21 C/C++ Problem
non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default] CTeam.h /CTeam line 22 C/C++ Problem

Auch paar tipps?
04.03.2016 10:00
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Du hättest auch meinen Header übernehmen sollen.
Habe dir nochmal kommentiert, was ich geändert habe:
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:
#ifndef CTEAM_H_
#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);
};

#endif /* CTEAM_H_ */


__________________
Syntax Highlighting fürs Board (Link)
04.03.2016 10:12 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
progger
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Die AUfgabe geht noch ein wenig weiter

Wie lege ich bei der g) genau diese Teams an ?

Wie macht man das ?

progger hat dieses Bild (verkleinerte Version) angehängt:
main.png

04.03.2016 10:30
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wie man ein Team anlegt, hatte ich dir schon gezeigt. Du musst nur noch den Variablennamen und den String ändern.
code:
1:
CTeam fcn("1. FC Nürnberg");


__________________
Syntax Highlighting fürs Board (Link)
04.03.2016 10:34 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
progger
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:

#include <iostream>
#include "CTeam.h"

using namespace std;


int main(){

	CTeam bayern("Bayern München");
	CTeam bvb("Borussia Dortmund");
	CTeam werder("Werder Bremen");
	bayern.addResult(3,3);
	bayern.addResult(1,4);



};



Irgendwie habe ich das Gefühl ,dass es doch nicht ganz stimmt großes Grinsen
04.03.2016 10:48
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Da fehlt halt noch die Ausgabe (und deren Formatierung). Ansonsten sehe ich kein Problem.
code:
1:
cout << bayern;


__________________
Syntax Highlighting fürs Board (Link)
04.03.2016 10:52 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
progger
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Und die drei Mannschaften einfach so ausgeben ?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:

#include <iostream>
#include "CTeam.h"

using namespace std;


int main(){

	CTeam bayern("Bayern München");
	CTeam bvb("Borussia Dortmund");
	CTeam werder("Werder Bremen");
	bayern.addResult(3,3);
	bayern.addResult(1,4);
    cout << bayern;
    
    cout << bayern << " , " << bvb << " , " << werder << endl;


};

04.03.2016 10:59
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

oder
code:
1:
2:
3:
cout << bayern;
cout << bvb;
cout << werder;

Das kannst du machen, wie du willst.

__________________
Syntax Highlighting fürs Board (Link)
04.03.2016 11:08 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
progger
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Bei der h) verstehe ich jetzt nicht genau was mit dem linken Operanden gemeint ist und was mit dem rechten ?

Wie bezeichne ich die genau ?
Dann muss ich ja irgendwie eine if Bedingung implementieren.
04.03.2016 11:14
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

DU kannst schreiben
code:
1:
bayern < bvb
, um zu schauen wer mehr Punkte hat.
Dabei ist bayern der linke und bvb der rechte Operand.

Im Code kommst du mit this an den linken und mit rop an den rechten Opernanden.

__________________
Syntax Highlighting fürs Board (Link)
04.03.2016 11:19 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
progger
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Woher weisst du das der linke Operand this ist ?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
bool CTeam::operator < (CTeam const& rop){
	
	if(this > rop){
		return true;
		
		
	}
	
	
	
}


Gleich viele Punkte bedeutet m_equalTotal.

if (this > goalsScored)

Mehr fällt mir im moment nicht zum letzten Teil ein verwirrt
04.03.2016 11:41
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Das const will er gerade nicht fressen unglücklich
code:
1:
2:
3:
4:
5:
6:
bool CTeam::operator < (CTeam &rop) {
	return this->getTotalPoints() > rop.getTotalPoints();
}

cout << (bayern < bvb) << endl; //1
cout << (bvb < bayern) << endl; //0

Ich habe jetzt nur die Punkte angeschaut, nicht die Tordifferenz. Das soll nur zeigen, wie es prinzipiell geht.

__________________
Syntax Highlighting fürs Board (Link)
04.03.2016 11:59 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
progger
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Kannst du mir erklären was diese Zeile genau macht ?

return this->getTotalPoints() > rop.getTotalPoints();
04.03.2016 12:11
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

this->getTotalPoints() ist die Punktzahl des linken Operanden (also bayern für den Aufruf in Zeile 5).
rop.getTotalPoints() entspricht der Punktzahl des rechten Operanden (bvb).
es steht also da: return 1 > 0 (bvb hat 0 Punkte, weil du nur Bayern gegen den BVB spielen lassen hast, nicht andersrum).
Und das ist true. Also wird eine 1 ins Terminal geschrieben.

__________________
Syntax Highlighting fürs Board (Link)
04.03.2016 12:14 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Seiten (4): « vorherige 1 [2] 3 4 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » C++ Einführung