C++ Aufgabe Problem



  • Hallo ich wollte euch mal fragen ob ich bei dieser Aufgabe auf dem richtigen Weg bin und die addResult Methode richtig programmiert habe ?

    * CTeam.h
     *
     *  Created on: 28.02.2016
     *      Author: VAIO
     */
    
    #ifndef CTEAM_H_
    #define CTEAM_H_
    #include <string>
    #include <iostream>
    using namespace std;
    
    class CTeam{
    
    private:
    	string m_teamName;
    	unsigned int m_winsTotal = 0;
    	unsigned int m_equalTotal = 0;
    	unsigned int m_goalsScoredTotal = 0;
    	unsigned int m_goalsReceivedTotal = 0;
    
    public:
    
    	/*CTeam::*/CTeam( string name = "NoName");
    	string getName();
    	void addResult( unsigned int goalsScored, unsigned int goalsReceived);
        unsigned const int getTotalPoints();
    
        friend ostream& operator >> (ostream& out , CTeam const& rop);
        bool operator << (CTeam const& rop);
    
    };
    

    Die cpp datei

    #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++;
    
    		}
    	else{
    
    		m_equalTotal++;
    	}
    
    }
    

    Aufgabenstellung
    http://www.pic-upload.de/view-29896184/c.png.html

    http://www.pic-upload.de/view-29896187/d.png.html

    Die übergebenen Parameterwerte werden außerdem im jeweiligen Attribut für die Gesamtzahl der eigenen Tore bzw. der Gegentore aufsummiert.

    Was mit dieser Aufgabe genau gemeint ist verstehe ich nicht großes Grinsen

    Was muss ich da genau machen ?



  • Die Variablen m_goalsScoredTotal und m_goalsReceivedTotal sollen wohl die Gesamtzahl der Tore und Gegentore zählen. Im übrigen sind deine Variablen in der *.cpp Datei keine Membervariablen mehr, sondern einfach globale Variablen. Membervariablen werden im Header zwischen dem class X { ... }; definiert.



  • Kannst du mir erklären wie ich das genau aufsummieren soll ?



  • Angenommen ein Team hat zwei Spiele gespielt und einmal 2:1 gewonnen und dann 1:1 unentschieden gespielt. Dann soll man wohl zählen, dass insgesamt 3 Tore geschossen und 2 Gegentore erhalten wurden. Wie man das als Code Programmiert kannst solltest du selbst rausfinden (es sind nur 2 Zeilen).



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



  • Angenommen ein Team hat zwei Spiele gespielt und einmal 2:1 gewonnen und dann 1:1 unentschieden gespielt. Dann soll man wohl zählen, dass insgesamt 3 Tore geschossen und 2 Gegentore erhalten wurden. Wie man das als Code Programmiert kannst solltest du selbst rausfinden (es sind nur 2 Zeilen).

    Bei mir kommt einfach nicht der Gedankenschritt .
    Liegt wohl daran das ich eigentlich erst Anfänger bei c++ bin.
    Leider wird das aber schon erwartet .

    Könnt ihr einen weiteren tipp geben?



  • Wie man in C++ rechnet ist aber schon klar? Du musst doch nur dafür sorgen, dass sich m_goalsScoredTotal bei jedem Aufruf von addResult um goalsScored vergrößert.



  • Also

    x= goalsScoredTotal+goalsScored;

    Die frage ist jetzt wie ich in etwa die Funktion einbauen kann ?



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


Anmelden zum Antworten