C++ 2

Neue Frage »

Auf diesen Beitrag antworten »
progger C++ 2

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];

}


 
Auf diesen Beitrag antworten »
eulerscheZahl

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;
Auf diesen Beitrag antworten »
progger

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

Auf diesen Beitrag antworten »
eulerscheZahl

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).
 
Auf diesen Beitrag antworten »
progger

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;
    }
Auf diesen Beitrag antworten »
progger

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
Auf diesen Beitrag antworten »
eulerscheZahl

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?
Auf diesen Beitrag antworten »
progger

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?
Auf diesen Beitrag antworten »
progger

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
Auf diesen Beitrag antworten »
eulerscheZahl

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;
}
Auf diesen Beitrag antworten »
progger

Hast du Tipps für die c) für mich ?
Auf diesen Beitrag antworten »
eulerscheZahl

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

Warum hast du auf der rechten Seite Team geschrieben ?

Und was bewirkt das m_curEntry++. Das Plus bedeutete ja Addition . Aber warum addieren ?
Auf diesen Beitrag antworten »
eulerscheZahl

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
Auf diesen Beitrag antworten »
progger

Was ist aber das team hier ?

Ich vertstehe die denkweise nicht ?
Auf diesen Beitrag antworten »
eulerscheZahl

team ist das Funktionsargument, wie du dem UML Diagramm entnehmen kannst.
Auf diesen Beitrag antworten »
progger

Ah ja jetzt verstehe ich es :

Hier scheint irgendwo ein Fehler zu sein:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
bool CTeam::addTeam(CTeam const& team)const{
if (m_curEntry >= m_maxEntry){

	return false;
}

else {
m_pTable[m_curEntry++] = team;
return true;
}
}



Kannst du mir auch kurz versuchen zu erklären warum das m_curEntry++?
Auf diesen Beitrag antworten »
eulerscheZahl

Zitat:
CTeam::addTeam

Du bist aber gerade bei CTeamTable.

Erst soll an die aktuelle Stelle (m_curEntry) geschrieben werden.
Dann wird m_curEntry um 1 erhöht, um an der nächsten Stelle weiterzuschreiben.
Auf diesen Beitrag antworten »
progger

Blöder Fehler .

Man braucht da viel Übung .

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
bool CTeamTable::addTeam(CTeam const& team)const{
if (m_curEntry >= m_maxEntry){

	return false;
}

else {
m_pTable[m_curEntry++] = team; hier fehler angezeigt?
return true;
}
}


Description Resource Path Location Type
increment of member 'CTeamTable::m_curEntry' in read-only object CTeamTable.cpp /CTeam line 34 C/C++ Problem
Auf diesen Beitrag antworten »
eulerscheZahl

Du willst die Variable m_curEntry ändern (ist auch nötig), geht aber wegen
bool CTeamTable::addTeam(CTeam const& team) const { nicht.
Deshalb muss das const da weg.
Auf diesen Beitrag antworten »
progger

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:

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

bool CTeamTable::addTeam(CTeam const& team){
if (m_curEntry >= m_maxEntry){

	return false;
}

else {
m_pTable[m_curEntry++] = team;
return true;
}
void CTeamTable::print(string headline){

	cout << this << endl;

}
}


Den als parameter übergeben überschrift ausgeben ?

Kann man das nicht mit this machen?
Auf diesen Beitrag antworten »
eulerscheZahl

Nö.
Du musst die Teams durchgehen und die einzeln ausgeben.
code:
1:
2:
3:
for (int i = 0; i < m_curEntry; i++) {
    cout << ...
}
Auf diesen Beitrag antworten »
progger

muss ich bei cout irgendwie die addresult methode ausgeben ?
Auf diesen Beitrag antworten »
eulerscheZahl

Wir haben für das CTeam den Operator << überladen. Deshalb reicht es an der Stelle
code:
1:
cout << m_pTable[i];
zu schreiben.
Die Ausgabe entspricht noch nicht ganz der gewünschten Form, aber das kriegen wir schon noch hin.
Auf diesen Beitrag antworten »
progger

Was wird durch dieses m_pTable[i] ausgegeben ?

Tut mir leid wegen den fragen .

Jetzt wird es ein wenig komplizierter für mich großes Grinsen
Auf diesen Beitrag antworten »
eulerscheZahl

Es wird das ausgegeben, was du bei
code:
1:
ostream& operator << (ostream &out, const CTeam &rop)
geschrieben hast.
Auf diesen Beitrag antworten »
progger

Ein kleiner Tipp wie die weitere Vorgehensweise ist ?

Dann versuche ich einen Ansatz zu posten großes Grinsen
Auf diesen Beitrag antworten »
eulerscheZahl

Du musst noch 2 Dinge tun:
1. die Ausgabeformatierung ändern, dass es mehr nach einer Tabelle aussieht.
2. die Sortierung. Schau mal, was zu zu Bubblesort finden kannst (ist nicht der klügste Sortieralgorithmus, aber dafür leicht zu programmieren).
Auf diesen Beitrag antworten »
progger

bubbleSort3(Array A)
n = A.size
do{
newn = 1
for (i=0; i<n-1; ++i){
if (A[i] > A[i+1]){
A.swap(i, i+1)
newn = i+1
} // ende if
} // ende for
n = newn
} while (n > 1)

Brauche ich diesen Algorithmus für die nummerierte Ausgabe?
Auf diesen Beitrag antworten »
eulerscheZahl

Jetzt musst du den Code nur noch verstehen und auf die aktuelle Aufgabe anpassen.
Auf diesen Beitrag antworten »
progger

Soll ich für A = m_pTable einsetzen ?
Auf diesen Beitrag antworten »
eulerscheZahl

Ja.
Und was ist A.size?
A[i] > A[i+1] musst du umdrehen zu A[i+1] < A[i] (Verständnisfrage: warum ist das so?)
A.swap(i, i+1) musst du implementieren, geht in 3 Zeilen.
Auf diesen Beitrag antworten »
progger

Und was ist A.size?

In unserem Fall die Grösse von m_pTable ?

bubbleSort3(Array m_pTable)
n = m_pTable.size
do{
newn = 1
for (i=0; i<n-1; ++i){
if (A[i] > A[i+1]){
A.swap(i, i+1)
newn = i+1
} // ende if
} // ende for
n = newn
} while (n > 1)

Warum das Zeichen sich umdreht ,verstehe ich nicht?
Auf diesen Beitrag antworten »
eulerscheZahl

A.size ist die Anzahl der genutzten Einträge der Tabelle, also m_curEntry.
Für das Ungleichheitszeichen schau dir nochmal an, welche Operatoren in CTeam überladen wurden.
Auf diesen Beitrag antworten »
progger

Also muss das m_curEntry.size heissen ?

Oder nennt man das schon m_pTable.size?

Hier wird doch überladen oder?

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;
}
Auf diesen Beitrag antworten »
eulerscheZahl

A.size ist die Anzahl der Einträge in A.
In unserem Fall entspricht das m_curEntry. Also kannst du statt A.size m_curEntry schreiben.

Es wird er < Operator überladen, nicht der > Operator. Also muss auch < verwendet werden, damit beim Sortieren etwas sinnvolles rauskommt.

Bleibt noch swap.
Das soll einfach die Enträge an Stelle i und i+1 tauschen.
Wie geht das? Tipp: du brauchst eine Hilfsvariable.
Auf diesen Beitrag antworten »
progger

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
bubbleSort3(m_curEntry)
n = m_curEntry;
do{
newn = 1
for (i=0; i<n-1; ++i){
if (m_curEntry[i] < m_curEntry[i+1]){
m_pTable.swap(i, i+1)
newn = i+1
} // ende if
} // ende for
n = newn
} while (n > 1)



Oder soll ich die Hilfsvariable einfach x nennen?
Auf diesen Beitrag antworten »
eulerscheZahl

Ist doch mit egal, wie du die Hilfsvariable nennst.
Schau dir beim Vergleich nochmal die Indizes an.
Auf diesen Beitrag antworten »
progger

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
bubbleSort3(m_curEntry)
n = m_curEntry;
do{
newn = 1
for (i=0; i<n-1; ++i){
if (m_curEntry[i] < m_curEntry[i+1]){
numbers.swap(i, i+1)
newn = i+1
} // ende if
} // ende for
n = newn
} while (n > 1)




code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
void CTeamTable::print(string headline){  

	cout << m_pTable[i] << endl;

	bubbleSort3(m_curEntry)
	n = m_curEntry;
	do{
	newn = 1
	for (i=0; i<n-1; ++i){
	if (m_curEntry[i] < m_curEntry[i+1]){
	numbers.swap(i, i+1)
	newn = i+1
	} // ende if
	} // ende for
	n = newn
	} while (n > 1)

}
};


Description Resource Path Location Type
a function-definition is not allowed here before '{' token CTeamTable.cpp /CTeam line 37 C/C++ Problem
expected '}' at end of input CTeamTable.cpp /CTeam line 55 C/C++ Problem
No return, in function returning non-void CTeam.cpp /CTeam line 39 Code Analysis Problem
No return, in function returning non-void CTeamTable.cpp /CTeam line 27 Code Analysis Problem

fehlermeldung?

Aber schon kompliziert ohne hilfe zu lösen
Auf diesen Beitrag antworten »
eulerscheZahl

Ich weiß gar nicht, wo ich mit dem Meckern anfangen soll...

bubbleSort3(m_curEntry) ist ein Funktionsname. Der gehört da nicht rein, weil die Funktion anders heißt und kein Argument braucht.
Was sind n und newn für Datentypen?
Was ist numbers und wo implementiert es die Funktion swap() ?
Warum steht das in der Funktion print?

Ich glaube es wäre sinnvoll, wenn du dir Hilfe im realen Umfeld (Uni) suchst, da kann man doch besser auf deine Probleme eingehen, als in einem Forum. Es gibt eine ziemliche Lücke zwischen dem, was du kannst und was von dir erwartet wird.

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

bool CTeamTable::addTeam(CTeam const& team) {
	if (m_curEntry >= m_maxEntry) {
		return false;
	}
	m_pTable[m_curEntry++] = team;
	return true;
}

void CTeamTable::print(string headline) {
	cout << headline << endl;
	for (int i = 0; i < m_curEntry; i++) {
   		cout << i+1 << " - " << m_pTable[i];
	}
	cout << endl;
}

void CTeamTable::sort() {
	for (int i = 0; i < m_curEntry; i++) {
		for (int j = 0; j < m_curEntry - 1; j++) {
			if (m_pTable[j+1] < m_pTable[j]) {
				CTeam tmp = m_pTable[j];
				m_pTable[j] = m_pTable[j+1];
				m_pTable[j+1] = tmp;
			}		
		}
	}
}
 
Neue Frage »
Antworten »


Verwandte Themen