C++ 2 |
05.03.2016, 18:34 | 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
cpp
|
||||||||||||||||||||
|
|||||||||||||||||||||
06.03.2016, 08:02 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
eulerscheZahl | Das Array passt. Aber das davor nicht.
Wozu soll das gut sein? Und was ist curEntry überhaupt? Ist nirgends definiert. Ich würde es so machen:
|
||||||||||||||||||||
06.03.2016, 11:14 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
progger |
Wieso hast du hier das grösser zeichen umgedreht ? In der Zusicherung steht das ja anders ?
|
||||||||||||||||||||
06.03.2016, 11:17 | 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). |
||||||||||||||||||||
Anzeige | |||||||||||||||||||||
|
|||||||||||||||||||||
06.03.2016, 11:32 | 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)
|
||||||||||||||||||||
06.03.2016, 15:54 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
progger | Stimmt der Destruktor ? leider Fehlermeldung
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, 17:11 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
eulerscheZahl | Hast du dir auch durchgelesen, was die Fehlermeldungen aussagen?
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.
Warum erstellst du da eine lokale Variable und nimmst nicht die Klassenvariable? |
||||||||||||||||||||
06.03.2016, 19:24 | 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
Woran erkenne ich denn die erste freie Position eines Array? |
||||||||||||||||||||
08.03.2016, 15:01 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
progger | Weiss jemand wie ich endlich die Fehler beheben kann ? Stecke schon seit Tagen fest. Scheint hier nicht so viel los zu sein |
||||||||||||||||||||
08.03.2016, 17:41 | 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.
|
||||||||||||||||||||
08.03.2016, 22:16 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
progger | Hast du Tipps für die c) für mich ? |
||||||||||||||||||||
09.03.2016, 06:31 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
eulerscheZahl | So würde ich das angehen:
|
||||||||||||||||||||
09.03.2016, 07:29 | 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 ? |
||||||||||||||||||||
09.03.2016, 15:30 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
eulerscheZahl | Weil ich schreibfaul bin
ist das selbe wie
|
||||||||||||||||||||
09.03.2016, 16:37 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
progger | Was ist aber das team hier ? Ich vertstehe die denkweise nicht ? |
||||||||||||||||||||
09.03.2016, 16:39 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
eulerscheZahl | team ist das Funktionsargument, wie du dem UML Diagramm entnehmen kannst. |
||||||||||||||||||||
09.03.2016, 16:44 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
progger | Ah ja jetzt verstehe ich es : Hier scheint irgendwo ein Fehler zu sein:
Kannst du mir auch kurz versuchen zu erklären warum das m_curEntry++? |
||||||||||||||||||||
09.03.2016, 16:47 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
eulerscheZahl |
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. |
||||||||||||||||||||
09.03.2016, 16:50 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
progger | Blöder Fehler . Man braucht da viel Übung .
Description Resource Path Location Type increment of member 'CTeamTable::m_curEntry' in read-only object CTeamTable.cpp /CTeam line 34 C/C++ Problem |
||||||||||||||||||||
09.03.2016, 16:54 | 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. |
||||||||||||||||||||
09.03.2016, 16:58 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
progger |
Den als parameter übergeben überschrift ausgeben ? Kann man das nicht mit this machen? |
||||||||||||||||||||
09.03.2016, 17:03 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
eulerscheZahl | Nö. Du musst die Teams durchgehen und die einzeln ausgeben.
|
||||||||||||||||||||
09.03.2016, 17:07 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
progger | muss ich bei cout irgendwie die addresult methode ausgeben ? |
||||||||||||||||||||
09.03.2016, 17:10 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
eulerscheZahl | Wir haben für das CTeam den Operator << überladen. Deshalb reicht es an der Stelle
Die Ausgabe entspricht noch nicht ganz der gewünschten Form, aber das kriegen wir schon noch hin. |
||||||||||||||||||||
09.03.2016, 22:50 | 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 |
||||||||||||||||||||
10.03.2016, 09:45 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
eulerscheZahl | Es wird das ausgegeben, was du bei
|
||||||||||||||||||||
10.03.2016, 11:29 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
progger | Ein kleiner Tipp wie die weitere Vorgehensweise ist ? Dann versuche ich einen Ansatz zu posten |
||||||||||||||||||||
10.03.2016, 11:38 | 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). |
||||||||||||||||||||
10.03.2016, 18:06 | 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? |
||||||||||||||||||||
11.03.2016, 08:04 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
eulerscheZahl | Jetzt musst du den Code nur noch verstehen und auf die aktuelle Aufgabe anpassen. |
||||||||||||||||||||
11.03.2016, 14:37 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
progger | Soll ich für A = m_pTable einsetzen ? |
||||||||||||||||||||
11.03.2016, 14:40 | 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. |
||||||||||||||||||||
11.03.2016, 16:26 | 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? |
||||||||||||||||||||
11.03.2016, 16:30 | 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. |
||||||||||||||||||||
11.03.2016, 16:48 | 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; } |
||||||||||||||||||||
11.03.2016, 16:57 | 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. |
||||||||||||||||||||
11.03.2016, 17:05 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
progger |
Oder soll ich die Hilfsvariable einfach x nennen? |
||||||||||||||||||||
11.03.2016, 17:08 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
eulerscheZahl | Ist doch mit egal, wie du die Hilfsvariable nennst. Schau dir beim Vergleich nochmal die Indizes an. |
||||||||||||||||||||
11.03.2016, 17:14 | Auf diesen Beitrag antworten » | ||||||||||||||||||||
progger |
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:38 | 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.
|
|