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

Informatiker Board » Themengebiete » Praktische Informatik » C++ 2 » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (8): [1] 2 3 nächste » ... letzte » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen C++ 2
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
progger
unregistriert
C++ 2 Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo alle zusammen :

Wollte euch fragen ob ich jetzt beim Konstruktor den speicher (auf Array) richtig angelegt hab?

hfile

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:
#ifndef CTEAMTABLE_H_
#define CTEAMTABLE_H_
#include<iostream>
using namespace std;

class CTeamTable {
public:
	CTeam* m_pTable;
	unsigned int m_maxEntry;
	unsigned int m_curEntry;

private:
	CTeamTable(int unsigned maxEntry);
	~CTeamTable();
	bool addTeam(CTeam const& team)const;
	void print(string headline);
	bool addResult(string team1,string team2,unsigned int goalsTeam1, unsigned int goalsTeam2);
	void sort();


};

#endif /* CTEAMTABLE_H_ */



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:
#include "CTeamTable.h"
#include<iostream>
using namespace std;


    unsigned int m_maxEntry;
	unsigned int m_curEntry = 0;
CTeamTable::CTeamTable(int unsigned maxEntry = 10){
    if(m_maxEntry >=5){
	m_maxEntry = maxEntry;
    }

    if(m_curEntry < m_maxEntry){

    	m_curEntry = curEntry;
    }

    CTeam* m_pTable;
    m_pTable = new CTeam[m_maxEntry];

}


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

05.03.2016 18:34
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 Array passt. Aber das davor nicht.

code:
1:
2:
3:
if(m_curEntry < m_maxEntry){
    m_curEntry = curEntry;
}

Wozu soll das gut sein? Und was ist curEntry überhaupt? Ist nirgends definiert.

Ich würde es so machen:
code:
1:
2:
3:
if (maxEntry < 5) maxEntry = 5;
m_maxEntry = maxEntry;
m_curEntry = 0;


__________________
Syntax Highlighting fürs Board (Link)
06.03.2016 08:02 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:

#include "CTeamTable.h"
#include<iostream>
using namespace std;


    unsigned int m_maxEntry =5;
	unsigned int m_curEntry = 0;
CTeamTable::CTeamTable(int unsigned maxEntry = 10){
    if(m_maxEntry <5){
	m_maxEntry = maxEntry;
    }

    if(m_curEntry < m_maxEntry){

    	m_curEntry = curEntry;
    }

    CTeam* m_pTable;
    m_pTable = new CTeam[m_maxEntry];

}



Wieso hast du hier das grösser zeichen umgedreht ?

In der Zusicherung steht das ja anders ?

code:
1:
2:
3:
4:
5:
6:
if(m_maxEntry <5){ wieso umgedreht hier ?
	m_maxEntry = maxEntry;
    }

06.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

Der Wert soll ja größer oder gleich 5 sein.
Wenn er das nicht ist, muss man da was machen (den Wert auf 5 setzen).

__________________
Syntax Highlighting fürs Board (Link)
06.03.2016 11:17 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

Dann müsste das hier auch so stimmen oder ?

Weil ich sehe gerade dass da steht die Zusicherung verletzt (also umgekehrt) großes Grinsen

code:
1:
2:
3:
4:
5:
6:
7:
 if(m_curEntry > m_maxEntry){
    	m_curEntry = 0;

    	m_curEntry = curEntry;
    }
06.03.2016 11:32
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

Stimmt der Destruktor ?

leider Fehlermeldung

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:
#include "CTeamTable.h"
#include<iostream>
using namespace std;


    unsigned int m_maxEntry =5;
	unsigned int m_curEntry = 0;
CTeamTable::CTeamTable(int unsigned maxEntry = 10){
	if (maxEntry < 5){

		maxEntry = 5;
	    m_maxEntry = maxEntry;
	    m_curEntry = 0;
	}

    CTeam* m_pTable;
    m_pTable = new CTeam[m_maxEntry];

}

CTeamTable::~CTeamTable(){

	delete[] m_pTable;
}


Description Resource Path Location Type
'CTeam' does not name a type CTeamTable.h /CTeam line 15 C/C++ Problem
'CTeam' has not been declared CTeamTable.h /CTeam line 22 C/C++ Problem
'CTeam' was not declared in this scope CTeamTable.cpp /CTeam line 23 C/C++ Problem
'm_pTable' was not declared in this scope CTeamTable.cpp /CTeam line 23 C/C++ Problem
'm_pTable' was not declared in this scope CTeamTable.cpp /CTeam line 30 C/C++ Problem
expected ';' before 'CTeam' CTeamTable.cpp /CTeam line 24 C/C++ Problem
expected type-specifier before 'CTeam' CTeamTable.cpp /CTeam line 24 C/C++ Problem
Member 'm_pTable' was not initialized in this constructor CTeamTable.cpp /CTeam line 15 Code Analysis Problem
No return, in function returning non-void CTeam.cpp /CTeam line 39 Code Analysis Problem
06.03.2016 15:54
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

Hast du dir auch durchgelesen, was die Fehlermeldungen aussagen?
Zitat:
'CTeam' does not name a type CTeamTable.h /CTeam line 15 C/C++ Problem
'CTeam' has not been declared CTeamTable.h /CTeam line 22 C/C++ Problem
'CTeam' was not declared in this scope CTeamTable.cpp /CTeam line 23 C/C++ Problem

In der Headerdaten ist CTeam offensichtlich nicht bekannt. Vielleicht solltest du es mal mit #include "CTeam.h" versuchen.
Nebenbei bemerkt hast du im header auch public und private vertauscht.

code:
1:
2:
CTeam* m_pTable;
m_pTable = new CTeam[m_maxEntry];

Warum erstellst du da eine lokale Variable und nimmst nicht die Klassenvariable?

__________________
Syntax Highlighting fürs Board (Link)
06.03.2016 17:11 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

Warum wird mir immer noch hier Fehler angezeigt ?
m_pTable = new CTeam[m_maxEntry];
Verstehe ich nicht . Im header habe ich es ja so includiert wie im UML Diagramm
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:
/*
 * CTeamTable.cpp
 *
 *  Created on: 05.03.2016
 *      Author: VAIO
 */

#include "CTeamTable.h"
#include "CTeam.h"
#include<iostream>
using namespace std;


    unsigned int m_maxEntry =5;
	unsigned int m_curEntry = 0;
CTeamTable::CTeamTable(int unsigned maxEntry = 10){
	if (maxEntry < 5){

		maxEntry = 5;
	    m_maxEntry = maxEntry;
	    m_curEntry = 0;
	}

    CTeam* m_pTable;
    m_pTable = new CTeam[m_maxEntry];

}

CTeamTable::~CTeamTable(){

	delete[] m_pTable;
}


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:
#ifndef CTEAMTABLE_H_
#define CTEAMTABLE_H_
#include<iostream>
#include "CTeam.h"
using namespace std;

class CTeamTable {
private:
	CTeam* m_pTable;
	unsigned int m_maxEntry;
	unsigned int m_curEntry;

public:
	CTeamTable(int unsigned maxEntry);
	~CTeamTable();
	bool addTeam(CTeam const& team)const;
	void print(string headline);
	bool addResult(string team1,string team2,unsigned int goalsTeam1, unsigned int goalsTeam2);
	void sort();


};

#endif /* CTEAMTABLE_H_ */



Woran erkenne ich denn die erste freie Position eines Array?
06.03.2016 19:24
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

Weiss jemand wie ich endlich die Fehler beheben kann ?

großes Grinsen

Stecke schon seit Tagen fest.

Scheint hier nicht so viel los zu sein großes Grinsen
08.03.2016 15:01
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 Problem war, dass du einen Kosntruktor für CTeam ohne Argumente brauchst.
Ich habe das default Argument von der cpp in den Header verschoben.
Den übrigen Code habe ich nochmal reinkopiert, weil du den Konstruktor von CTeamTable falsch hattest.

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;
	unsigned int m_equalTotal;
	unsigned int m_lostTotal;
	unsigned int m_goalsScoredTotal;
	unsigned int m_goalsReceivedTotal;

public:

	CTeam(string name = "noName");
	string getName();
	void addResult( unsigned int goalsScored, unsigned int goalsReceived);
    unsigned int getTotalPoints() const;

    friend ostream& operator << (ostream& out , CTeam const& rop);
    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) {
    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;
}


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
#ifndef CTEAMTABLE_H_
#define CTEAMTABLE_H_
#include<iostream>
#include "CTeam.h"
using namespace std;

class CTeamTable {
private:
	CTeam* m_pTable;
	unsigned int m_maxEntry;
	unsigned int m_curEntry;

public:
	CTeamTable(int unsigned maxEntry);
	~CTeamTable();
	bool addTeam(CTeam const& team)const;
	void print(string headline);
	bool addResult(string team1,string team2,unsigned int goalsTeam1, unsigned int goalsTeam2);
	void sort();
};

#endif /* CTEAMTABLE_H_ */


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
#include "CTeamTable.h"
#include "CTeam.h"
#include <iostream>
using namespace std;

CTeamTable::CTeamTable(int unsigned maxEntry = 10){
	if (maxEntry < 5){
		maxEntry = 5;
	}
    m_maxEntry = maxEntry;
    m_curEntry = 0;
    m_pTable = new CTeam[m_maxEntry];

}

CTeamTable::~CTeamTable(){
	delete[] m_pTable;
}


__________________
Syntax Highlighting fürs Board (Link)
08.03.2016 17:41 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

Hast du Tipps für die c) für mich ?
08.03.2016 22:16
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

So würde ich das angehen:
code:
1:
2:
3:
if (m_curEntry >= m_maxEntry) return false;
m_pTable[m_curEntry++] = team;
return true;


__________________
Syntax Highlighting fürs Board (Link)
09.03.2016 06:31 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

Warum hast du auf der rechten Seite Team geschrieben ?

Und was bewirkt das m_curEntry++. Das Plus bedeutete ja Addition . Aber warum addieren ?
09.03.2016 07:29
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

Weil ich schreibfaul bin
code:
1:
m_pTable[m_curEntry++] = team;

ist das selbe wie
code:
1:
2:
m_pTable[m_curEntry] = team;
m_curEntry = m_curEntry + 1


__________________
Syntax Highlighting fürs Board (Link)
09.03.2016 15:30 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

Was ist aber das team hier ?

Ich vertstehe die denkweise nicht ?
09.03.2016 16:37
Seiten (8): [1] 2 3 nächste » ... letzte » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » C++ 2