C++ Aufgabe Problem



  • Was ist denn jetzt x ?

    sebi707 schrieb:

    [...], dass sich m_goalsScoredTotal um goalsScored vergrößert.

    Etwas um einen Wert vergrößern:

    etwas = etwas + sonstwas

    oder

    etwas += sonstwas



  • m_goalsScoredTotal += goalsScored

    Das würde jetzt stimmen oder hoffentlich?



  • Ja, so addierst du den Wert einer Variable zu einer anderen und weist das Ergebnis dem ersten Summanden zu.

    sebi707 schrieb:

    Ich sehe auch gerade, dass da noch ein Fehler in deiner addResult Funktion ist. Überlege nochmal ob wirklich nur m_winsTotal verändert wird wenn goalsScored > goalsReceived wahr ist.



  • m_goalsScoredTotal += goalsScored;

    Wo muss ich das genau in dem Programm einbauen ?

    Das macht mir im moment problem .

    Ich sehe auch gerade, dass da noch ein Fehler in deiner addResult Funktion ist. Überlege nochmal ob wirklich nur m_winsTotal verändert wird wenn goalsScored > goalsReceived wahr ist.

    Bei diesem problem bin ich gerade tran.
    Sobald ich es hab ,poste ich es euch 😃



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

    Jetzt müsste es stimmen 😃



  • info schrieb:

    Jetzt müsste es stimmen 😃

    Ja so stimmt es. Nur der Vollständigkeit halber aber so hättest du dein vorherigen Code auch "retten" können:

    if(goalsScored > goalsReceived) {
        m_winsTotal++;
    }
    else if(goalsReceived > goalsScored) {
        m_lostTotal++;
    }
    else {
        m_equalTotal++;
    }
    


  • m_goalsScoredTotal += goalsScored;

    Wo muss ich das genau in dem Programm einbauen ?



  • Was denkst du denn wo es hin soll? In die addResult Funktion ist schonmal klar. In der Funktion gibts ja aber nicht viele Möglichkeiten und die meisten sind richtig.



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

    Habe es so einfach eingebaut .

    Ok?



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

    So sorry. Jetzt ok?



  • Ja außerhalb der if-Bedingungen. Es soll ja schließlich immer ausgeführt werden. Jetzt das gleiche noch für m_goalsReceivedTotal ...



  • #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;
    
     };
    
    CTeam::CTeamgetTotalPoints(){
    
    return m_winsTotal; Da muss man doch irgendwie auch vorher die Punkte berechnen ?
    
    if( goalsScored > goalsReceived){ 
    
    Was muss ich jetzt genau machen damit man jetzt 3 Punkte erhält,beim gewonnen Spiel?
    
    }
    
    }
    


  • 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 😃


Anmelden zum Antworten