C++ Aufgabe Problem



  • Denk doch mal ein bisschen selbst nach. Bisher haben wir dir die Lösung fast vorgesagt. Keine der Aufgaben war schwierig, selbst für einen Anfänger. Ich nehme an die Übungen sind eine Hausarbeit? Dann habt ihr doch sicher irgendwann mal die Grundlagen um Unterricht angesprochen. Schau nochmal in deine Aufzeichnungen, benutze Google oder sowas. Wenn du zu etwas bestimmtem eine Frage hast oder der Code nicht wie von dir erwartet funktioniert kannst du ja nochmal fragen.



  • Es ist nur eine Übungsaufgabe .

    Kannst du mir wenigstens einen kleinen tipp geben wie ich das mit den Punkten als code machen könnte ?

    Weil ich komme auf keine Idee .

    Es fällt mir sehr schwer beim programmieren auf diese Ideen zu kommen 😃



  • Mach ne Pause und schaus dir später nochmal an.
    Beschreibe auf Papier in Worten was passieren soll, und über setzte das Stück für Stück in Code
    Lass den blöden C Prefix bei CTeam weg, falls möglich.
    Verwende constructor initialization list.



  • Ich habe mal einen Versuch nach einer Pause gestartet 😃

    #include <iostream>
    #include <string>
    #include "CTeam.h"
    
    using namespace std;
    
    CTeam::CTeam( string name = "NoName"){
    
        m_teamName = name;
    }
    
    string CTeam::getName(){
    
        return m_teamName;
    }
    
        unsigned int m_goalsScoredTotal = 0;
        unsigned int m_goalsReceivedTotal = 0;
        unsigned int m_winsTotal = 0;
        unsigned int m_equalTotal = 0;
        unsigned int m_lostTotal = 0;
    
    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(){
    
    if( goalsScored > goalsReceived){
    
    	m_winsTotal = 3;
    
    }
    
    if( goalsReceived == goalsScored){
    
    	m_winsTotal = 1;
    
           }
    if( goalsReceived> goalsScored){
    
    	m_winsTotal = 0;
    
           }
    return m_winsTotal;
    
    };
    

    Kann man das so machen ?



  • Ne stimmt so leider nicht. Erstmal solltest du dir anschauen welche Variablen du überhaupt zur Verfügung hast. Die Variablen goalsScored und goalsReceived gibt es in der getTotalPoints Funktion nämlich gar nicht (sind ja die Parameter von addResult ). Du hast nur Zugriff auf die Membervariablen deiner Team Klasse. Jetzt sollst du also die Anzahl der Punkte berechnen und laut Aufgabenstellung gibt ein Sieg 3 Punkte, ein Unentschieden einen Punkt. Angenommen ein Team hat jetzt 4mal gewonnen und einmal Unentschieden gespielt (wie oft verloren ist egal, da sich die Punktzahl dafür nicht ändert). Dann hat dieses Team offensichtlich 4*3 + 1*1 = 13 Punkte. Das kannst du jetzt genauso berechnen in deinem Programm. Die Anzahl Siege stehen ja in m_winsTotal und Anzahl Unentschieden in m_equalTotal .



  • #include <iostream>
    #include <string>
    #include "CTeam.h"
    
    using namespace std;
    
    CTeam::CTeam( string name = "NoName"){
    
        m_teamName = name;
    }
    
    string CTeam::getName(){
    
        return m_teamName;
    }
    
        unsigned int m_goalsScoredTotal = 0;
        unsigned int m_goalsReceivedTotal = 0;
        unsigned int m_winsTotal = 0;
        unsigned int m_equalTotal = 0;
        unsigned int m_lostTotal = 0;
    
    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(){
    	  m_goalsScoredTotal = m_winsTotal*3+m_equalTotal*1 ;
    
    	 return m_goalsScoredTotal;
    
    };
    

    Leider wäre ich auf die Idee nicht selbst gekommen.

    Stimmt der code wenigstens jetzt?



  • info15 schrieb:

    Leider wäre ich auf die Idee nicht selbst gekommen.

    Da hilft nur eins: Weiter üben!

    info15 schrieb:

    Stimmt der code wenigstens jetzt?

    Fast. Deine getTotalPoints Funktion verändert jetzt den m_goalsScoredTotal Wert welcher gar nichts mit Punkten zu tun hat. Entweder erstellst du eine lokale Variable:

    unsigned int points = m_winsTotal*3+m_equalTotal*1;
    return points;
    

    Oder du kannst das Ergebnis auch direkt zurückgeben:

    return m_winsTotal*3+m_equalTotal*1;
    


  • Ah gut . Ich gebe zu das der letzte Teil ein wenig schwer für mich ist ,da ich mich mit überladenen Operatoren nicht auskenne.

    Ich weiss gar nicht wie man mit operatoren etwas ausgibt 😃

    Ich versuche mich da gerade ein wenig einzulesen .

    Aber ich würde gerne auch tips annehmen 😃



  • Kennst du einen gewissen "Hausi"?



  • Hausi? Kenne ich nicht.

    Ok ich versuche es selber hin zu bekommen



  • Ich habe einen versuch gestartet wenigstens .

    Funkioniert so die Ausgabe bei überladenen Operatoren

    bool CTeam::operator << (CTeam const& rop){
    
    	 cout<<"CTeam@" << "m_winsTotal"<< "Spiele gewonnen  " << " , " <<  "m_equalTotal" << " Spiele unentschieden"<< endl;
    
     };
    

    Ich hoffe ihr seid net böse falls das Quatsch ist 😃



  • operator overloading --> Stream extraction and insertion



  • info15 schrieb:

    bool CTeam::operator << (CTeam const& rop){
    
    	 cout<<"CTeam@" << "m_winsTotal"<< "Spiele gewonnen  " << " , " <<  "m_equalTotal" << " Spiele unentschieden"<< endl;
    
     };
    

    Rätsts Du sowas?
    Was sollen immer die ganzen leeren Zeilen?
    Hast Du einen Compiler und schaust Dir mal die Ergebnisse an?



  • Du suchst evtl einfach eine print-Funktion.

    void CTeam::print(){
    
    	 cout<<"CTeam@" << "m_winsTotal"<< "Spiele gewonnen  " << " , " <<  "m_equalTotal" << " Spiele unentschieden"<< '\n';
     };
    




  • Ehrlich gesagt .

    Jetzt bin ich ganz verwirrt wie ich die Ausgabe darstellen kann .

    Vielleicht kann jemand einfach ein Beispiel posten und ich kann es darauf anwenden. 😕


Anmelden zum Antworten