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): « vorherige 1 2 [3] 4 5 nächste » ... letzte » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen C++ 2
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
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

Soll ich für A = m_pTable einsetzen ?
11.03.2016 14:37
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

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.

__________________
Syntax Highlighting fürs Board (Link)
11.03.2016 14:40 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 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?
11.03.2016 16:26
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

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.

__________________
Syntax Highlighting fürs Board (Link)
11.03.2016 16: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

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;
}
11.03.2016 16: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

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.

__________________
Syntax Highlighting fürs Board (Link)
11.03.2016 16:57 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:
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?
11.03.2016 17:05
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

Ist doch mit egal, wie du die Hilfsvariable nennst.
Schau dir beim Vergleich nochmal die Indizes an.

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

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
11.03.2016 17: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

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


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

Aber ich muss sagen ,dass ich es in diesem Forum gut verstehe . großes Grinsen

Vielleicht kann ich ja dann das erlernte bei einer neuen Aufgabe später selbst anwenden
Was sind n und newn für Datentypen? Int denke ich ,aber es ist im Algorithmus nicht definiert
Was ist numbers und wo implementiert es die Funktion swap() ? geschockt
Warum steht das in der Funktion print? Stimmt muss ja hier stehen ,weil es ja sortiert ausgegeben wird großes Grinsen Blöd von mir.




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

Das mit dem swap muss ich noch einbauen im Algoritmus oder?
11.03.2016 17:52
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

Ich hätte den Rest vielleicht auch reinkopieren sollen.

Das swap entspricht dem hier:
code:
1:
2:
3:
CTeam tmp = m_pTable[j];
m_pTable[j] = m_pTable[j+1];
m_pTable[j+1] 

Mit der Frage nach den Datentypen wollte ich darauf hinaus, dass du Variablen verwendest, die du nie definiert hast. Das kann gar nichts werden.

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:
#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 << rop.m_teamName << " : " << rop.m_winsTotal << " " << rop.m_equalTotal << " " << rop.m_lostTotal << " ( " << rop.getTotalPoints() << " Punkte ) Tore " << rop.m_goalsScoredTotal << ":" << rop.m_goalsReceivedTotal << 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:
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:
#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;
			}		
		}
	}
}


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);
	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:
19:
20:
21:
22:
#include <iostream>
#include "CTeam.h"
#include "CTeamTable.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);
	werder.addResult(3,3);
	bvb.addResult(4,1);
	CTeamTable table(3);
	table.addTeam(bayern);
	table.addTeam(werder);
	table.addTeam(bvb);
	table.print("Unsortierte Tabelle");
	table.sort();
	table.print("Sortierte Tabelle");
};


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

e)

CTeamTable tabelle[10];

Mit 10 Speicherplätzen muss man doch mit array darstellen ?
12.03.2016 16: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

Nein. EINE Tabelle, aber 10 teams in der Tabelle.
code:
1:
CTeamTable table(10);


__________________
Syntax Highlighting fürs Board (Link)
12.03.2016 16: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 dieses table hatten wir irendwie voher definiert ?

Wie wird denn einfach so speicher angelegt ?
12.03.2016 16:57
Seiten (8): « vorherige 1 2 [3] 4 5 nächste » ... letzte » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » C++ 2