Implementierungsproblem

Neue Frage »

Auf diesen Beitrag antworten »
Kevin33 Implementierungsproblem

Habe folgende Methode implementiert

Implementieren Sie die Methode addResult(). Der erste Parameter enthält die eigenen Tore, der zweite Parameter die Gegentore. Wenn die Anzahl der eigenen Tore größer ist als die Anzahl der Gegentore, wird das das Attribut m_winsTotal um 1 erhöht, bei mehr Gegentoren als eigenen Toren das Attribut m_lostTotal und bei gleich vielen Toren das Attribut m_equalTotal. Die übergebenen Parameterwerte werden außerdem im jeweiligen Attribut für die Gesamtzahl der eigenen Tore bzw. der Gegentore aufsummiert.

Ich bekomme folgende Fehler leider nicht weg?
Description Resource Path Location Type
expected ',' or '...' before 'rop' CTeam.h /CTeam line 29 C/C++ Problem
no 'std::__cxx11::string CTeam::getName()' member function declared in class 'CTeam' CTeam.cpp /CTeam line 17 C/C++ Problem
control reaches end of non-void function [-Wreturn-type] CLottoTicket.cpp /CTIP line 60 C/C++ Problem
No return, in function returning non-void CLottoTicket.cpp /CTIP line 35 Code Analysis Problem
suggest parentheses around assignment used as truth value [-Wparentheses] CLottoTicket.cpp /CTIP line 43 C/C++ Problem


Header:

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:
#ifndef CTEAM_H_
#define CTEAM_H_
#include<iostream>
using namespace std;
#include<string>

class CTeam{
private:
	string m_teamName;
	unsigned int m_winsTotal=0;
	unsigned int m_lostTotal =0;
	unsigned int m_equalTotal= 0;
	unsigned int m_goalsScoredTotal = 0;
	unsigned int m_goalsReceivedTotal=0;

public:
	CTeam(string name = "NoName");
	string getName;
	void addResult(unsigned int goalsScored,unsigned int goalsReceived);
	unsigned int const getTotalPoints();
	friend ostream& operator <<(ostream& out,CTeam const& rop);
	bool operator << (const& CTeam rop);

};
ostream& operator <<(ostream& out,CTeam const& rop);



cpp

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:
#include<iostream>
using namespace std;
#include<string>
#include"CTeam.h"

CTeam::CTeam(string name ){

	m_teamName = name;
}

std::string CTeam::getName(){
	return m_teamName;

	}

void CTeam::addResult(unsigned int goalsScored,unsigned int goalsReceived){

	if(this->m_goalsScoredTotal>this->m_goalsReceivedTotal ){

		m_winsTotal += 1;
		goalsScored ++;
	}
	if(this->m_goalsScoredTotal<this->m_goalsReceivedTotal ){

			m_lostTotal += 1;
			goalsReceived++;
		}
	if(this->m_goalsScoredTotal==this->m_goalsReceivedTotal ){

				m_equalTotal += 1;
			}

}





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

War hiermit einfach das gemeint:

goalsScored ++;

Und für den anderen Fall das andere?
 
Auf diesen Beitrag antworten »
as_string

Das ist ja schon wieder alles völlig falsch, syntaktisch so wie so, aber offenbar hast Du auch wieder die ganze Logik nicht verstanden. Das wird so wirklich nie was!

Gruß
Marco
Auf diesen Beitrag antworten »
Kevin33

Wieso ?
Ist meine If Bedingung falsch ?
Ich habe mit this auf das Objekt gegriffen und will dann beide vergleichen ?

Oder soll ich nur das m_ vor der Variablenweg lassen ?

Also ich werde jetzt auch keine 100 mal mehr nachfragen .
So macht es dann auch wirklich kein Sinn
Auf diesen Beitrag antworten »
as_string

Hallo!

Beantworte mir doch bitte mal diese Frage: Warum nimmst Du nicht ein Buch und lernst es wirklich. Du hast in sämtlichen Foren jetzt wirklich schon viel Zeit vergeudet durch Dein Posten, ohne dass Du irgendwie voran gekommen bist. Hättest Du die Zeit in wirkliches Lernen investiert, indem Du das gemacht hättest, was alle hier und in anderen Foren immer wieder gesagt haben: "Nimm Dir ein Buch!", dann wärst Du in der selben Zeit schon deutlich weiter! Warum tust Du selbst das an? Warum verschwendest Du so Deine Zeit, obwohl Du es von jedem gesagt bekommst.
Ich kann das nicht verstehen...

Trotzdem kurz zur Aufgabe, obwohl doch schon alles im Aufgabentext steht:
Du sollst die Tore und Gegentore natürlich immer aufsummieren, also egal ob gewonnen oder verloren, ist doch erstens auch so im Aufgabentext gesagt und ja wohl auch logisch: Wenn ich 3:2 gewinne, muss ich doch trotzdem die 2 Gegentore bei den Gesamtgegentoren aufaddieren, obwohl ich gewonnen habe. Schalte doch auch einfach mal das Gehirn ein!

Aufsummieren macht man mit "variable += addistionswert;". "variable += 1" zählt die Variable nur um 1 hoch entsprechend. Für das um eins-hoch-zählen ist "variable++" eine Abkürzung. Du willst bei einem gewonnen Spiel die entsprechende Variable eins hoch zählen, aber die Tore/Gegentore doch wohl nicht nur um 1 sondern um die entsprechende Anzahl von Toren/Gegentoren und zwar immer. Überlege Dir doch endlich auch mal, was Du überhaupt tuen sollst, was das alles ergeben soll, für was, etc.

Du hast immer noch nicht verstanden, was "Membervariablen" oder "Felder einer Klasse" sind und was lokale Variablen, etc. sind, was sie bedeuten und wie sie zu verwenden sind. Das kann ich Dir hier doch nicht erklären, das ist ein fundamentaler Teil von C++ (und den meisten anderen Programmiersprachen). Genau dafür gibt es Bücher, die solche Dinge erklären. Soll ich hier für Dich jetzt anfangen ein Buch zu schreiben???

Dann so Standard-Syntax-Sachen. Wie sieht die Signatur für ein "call by const reference aus"? Su schreibst ja const, & und rop in jeder erdenklichen Reihenfolge und wunderst Dich, dass es nicht geht... Geschweige denn, dass Du nicht die blasseste Ahnung hast, was es überhaupt bedeutet (-> das findest Du in einem Buch!)

Dann kommen auch noch so Fehler dazu, dass Du zweimal den Operator << überladen willst, obwohl in Deinem Aufgabentext einmal operator<< und einmal operator< steht (ja, es ist ein großer Unterschied, ob es der Vergleichsoperator "kleiner" oder der Stream-Operator "<<" sein soll!!!). Also noch nicht mal abschreiben klappt bei Dir.

Wir können Dir da nicht weiter helfen außer den Ratschlag: Nimm ein Buch und fange endlich an, das wirklich zu lernen und höre auf, Deine Zeit (und die vieler anderer, scheint Dir ja aber egal zu sein!) zu vergeuden!

Gruß
Marco
 
Auf diesen Beitrag antworten »
as_string

Zitat:
Original von Kevin33
Wieso ?
Ist meine If Bedingung falsch ?
Ich habe mit this auf das Objekt gegriffen und will dann beide vergleichen ?

Oder soll ich nur das m_ vor der Variablenweg lassen ?

Ja, das ist einer der vielen Fehler: Was willst Du denn vergleichen? Die bisher aufsummierten Tore und Gegentore oder die Tore und Gegentore des neuen Spiels? Wann ist ein Spiel gewonnen? Wenn die es mehr Tore als Gegentore bisher in der Saison gab oder wenn es mehr Tore als Gegentore im aktuellen Spiel gab?
Denk doch mal nach, was Du überhaupt machst, was ist denn die Membervariable mit dem m_ vorne dran, auf die Du mit this zugreifen willst? Warum überhaupt this (das brauchst Du normalerweise nicht, wenn Du in einer Methode auf eine Membervariable zugreifen willst!) Mit dem "->" ist es hier sogar komplett falsch.
Also schon diese if-Vergleiche sind syntaktisch falsch (wegen dem "->"), sind semantisch falsch (Du vergleichst die bisherige Summe von Toren/Gegentoren und nicht die des aktuellen Spiels) und zeigt, dass Du mal wieder nicht im Geringsten verstanden hast, um was es überhaupt geht. So ist es aber in jeder einzelnen Zeile! Was soll Dir da irgendjemand helfen können?

Stell Dir doch mal vor wie das so bei Ligaspielen ist. Bist Du Fussballfan oder irgendein anderer Sport vielleicht?
Da gibt es doch die "Tordifferenz" und so weiter. In den Tabellen wird doch auch immer aufgelistet, wieviele Spiele bisher in der Saison gewonnen, verloren und unentschieden gespielt wurden und wieviele Tore die Mannschaft gemacht hat und wieviele sie bekommen hat.
Wie würdest Du das machen, wenn Du so was in einem Programm verfolgen wolltest? Du würdest verschiedene Zähler anlegen. Für die Anzahl gewonnener, verlorener und unentschiedener Spiele und für die Summe von Treffern und Gegentreffern jeweils noch einen.
Nach jedem Spiel würdest Du die Zähler anpassen.
Beschreibe mir doch jetzt mal in eigenen Worten, was Du mit welchem Zähler machen müsstest, nachdem ein Spiel gespielt wurde. Was würdest Du machen bei 3:2, was bei 1:2, was bei 2:2, was bei 0:0? Alle solche Fälle musst Du in dieser Funktion korrekt behandeln. Das ist doch jetzt wirklich nicht schwer!
Auf diesen Beitrag antworten »
Kevin33

ich weiss ,dass das noch nicht komplett korrekt ist aber:

Brauche ich eigentlich auch eine for Schleife ?

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:

void CTeam::addResult(unsigned int goalsScored,unsigned int goalsReceived){

	unsigned int goalsScored =0;   wieso hier Fehlermeld ? Wollte das es bei 0 beginnt?
	unsigned int goalsReceived = 0; In Header definieren?
	if(goalsScored>goalsReceived ){

		m_winsTotal += 1;

	}
	if(goalsScored<goalsReceived ){

			m_lostTotal += 1;

		}
	if(m_goalsScoredTotal==m_goalsReceivedTotal ){

				m_equalTotal += 1;
			}

}

Auf diesen Beitrag antworten »
Kevin33

Aber müsste ich in der if bedingung auch nicht noch zusätzlich mit&& einbauen , das

m_goalsScoredTotal> m_goalsReceivedTotal ?
Auf diesen Beitrag antworten »
as_string

Wenn Du fragst, warum Du da eine Fehlermeldung bekommst, dann zeigt das nur, dass Du wirklich absolut gar nichts verstanden hast. Weder auch nur die essentialsten Grundlagen einer imperativen Programmiersprache noch die Grundidee, die diese Aufgabe umsetzen soll, obwohl die mit Programmieren nichts zu tun hat und jedem sofort einleuchten sollte.
Ich kann Dir da nicht weiter helfen, außer, wie so oft, auf Bücher, Mitschüler/-Studenten, Lehrer/Dozenten, etc zu verweisen. Alles was Du bisher hier und in anderen Foren getan hast ist komplette Zeitverschwendung.

Außerdem bist Du auf keine einzige meiner Fragen eingegangen. Warum sollte ich was schreiben, das Du offenbar so wie so nicht liest?
Auf diesen Beitrag antworten »
Kevin33

Ich dachte dass ich deine Worte in meinem Code umgewandelt habe großes Grinsen q

Naja ok . Ich habe halt sau schwierigkeiten mit dem programmieren .
Auf diesen Beitrag antworten »
as_string

Zitat:
Original von Kevin33
Naja ok . Ich habe halt sau schwierigkeiten mit dem programmieren .

Diesen Quatsch erzählst Du immer wieder. In Wahrheit ist das Dein geringstes Problem bzw. nur eine Folge davon, dass Du einfach nicht machst, was Dir gesagt wird. Du hast immer nocsh kein Buch gelesen!

Wo habe ich gesagt, dass Du die Übergabe Parameter in die Methode gleich am Anfang nochmal deklarieren solltest und dann auch noch mit 0 belegen sollst??? Das ist doch in jeder Hinsicht völliger Blödsinn! Das hat doch mit "Schwierigkeiten beim Programmieren" absolut nichts zu tun! (Außer dass man, wenn man gar nix kapiert, natürlich auch nicht programmieren kann...).

Wenn diser Kurs Teil einer wie auch immer gearteten Ausbildung ist, dann mein Rat: Lass es sein. Du bringst offensichtlich nicht die minimalsten Voraussetzungen daüfr mit!

Gruß
Marco
Auf diesen Beitrag antworten »
Kevin33

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:

/* 
 * CTeam.cpp 
 * 
 *  Created on: 21.10.2017 
 *      Author: Medion 
 */ 
#include<iostream> 
using namespace std; 
#include<string> 
#include"CTeam.h" 
  
CTeam::CTeam(string name ){ 
  
    m_teamName = name; 
} 
  
std::string CTeam::getName(){ 
    return m_teamName; 
  
    } 
  
void CTeam::addResult(unsigned int goalsScored,unsigned int goalsReceived){ 
  
  
    if(goalsScored>goalsReceived &&  m_goalsScoredTotal>m_goalsReceivedTotal){ 
  
        m_winsTotal += 1; 
  
  
    } 
    if(goalsScored<goalsReceived &&  m_goalsScoredTotal<m_goalsReceivedTotal  ){ 
  
            m_lostTotal += 1; 
  
  
        } 
    if(m_goalsScoredTotal==m_goalsReceivedTotal && goalsScored== goalsReceived){ 
  
                m_equalTotal += 1; 
            } 
  
}






Ich weiß nicht ob es jetzt Quatsch ist oder nicht ?

Ich habe die Aufgabe so gelöst
Auf diesen Beitrag antworten »
as_string

Ja, ist falsch.
Erkläre mir doch mal: Wann ist ein Spiel gewonnen? Was vergleichst Du dafür? welchen Variablen entsprechen die Werte, die Du vergleichen würdest?
Gib mir bitte erstmal eine direkte Antwort!
Auf diesen Beitrag antworten »
as_string

Was ist eigentlich aus dem Aufsummieren der Tore/Gegentore geworden? Sollen die sich von alleine addieren???
Auf diesen Beitrag antworten »
Kevin33

Ein Spiel ist gewonnen wenn die Gegentore größer sind als die enthaltenen Tore .

Ich dachte zuerst das man nur goalsReceived und goalsScored vergleichen sollte ?

Aufsummieren habe ich doch mit +=1 gemacht . Dachte ich zumindest
Auf diesen Beitrag antworten »
as_string

Zitat:
Original von Kevin33
Ein Spiel ist gewonnen wenn die Gegentore größer sind als die enthaltenen Tore .

Wohl gerade andersrum, oder?
Zitat:
Original von Kevin33
Ich dachte zuerst das man nur goalsReceived und goalsScored vergleichen sollte ?

das hast Du aber nie gemacht! Immer noch irgendwas mit den total-Zeugs verglichen! Warum sollten die bisherigen aufsummierten Tore/Gegentore denn irgendeine Relevanz für die Entscheidung spielen, ob das aktuelle Spiel gewonnen oder verloren ist?
Zitat:
Original von Kevin33
Aufsummieren habe ich doch mit +=1 gemacht . Dachte ich zumindest

Nein, das summiert eben nicht auf (hab oben schon erklärt warum) Du hast es auf die Übergabeparameter für die aktuellen Tore/Gegentore angewandt und nicht auf die Summe (...Total...) und Du hast nur das jeweils eine zu addieren versucht, je nachdem ob gewonnen oder verloren wurde. Ich meine, noch viel falscher geht ja gar nicht mehr und mit programmieren können oder nicht hat das nix zu tun, sondern nur mit komplettem Unverständnis auf allen Ebenen!
Auf diesen Beitrag antworten »
Kevin33

hmm ok . Wieso soll man goalsreceived.total usw weg lassen ?
Ich dachte ,dass das auch zum Endergebnis sozusagen gehört

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:
void CTeam::addResult(unsigned int goalsScored,unsigned int goalsReceived){


	if(goalsScored>goalsReceived ){

		m_winsTotal = m_winsTotal + 1 ;


	}
	if(goalsScored<goalsReceived   ){

			m_lostTotal = m_lostTotal + 1;


		}
	if( goalsScored== goalsReceived){

				m_equalTotal= m_equalTotal +1;
			}

}





Auf diesen Beitrag antworten »
as_string

Ich hab nicht gesagt, dass man das weglassen soll, wo liest Du das denn raus??? Ich habe nur gesagt, dass die beiden Werte nichts damit zu tun haben, ob das aktuelle Spiel gewonnen ist oder nicht!
Und was soll denn überhaupt goalsreceived.total sein???
Das hier
m_winsTotal = m_winsTotal + 1 ;
entspricht
m_winsTotal += 1;
was wiederum dem hier entspricht:
m_winsTotal++;
Alle diese Anweisungen zählen die Variable um eins hoch und das ist hier auch richtig.

Wenn Du aber die Gesamttore zählen willst, musst Du diese ja nicht um 1hoch zählen, sondern eben um die Anzahl der jeweils gefallenen Tore. Also nicht eine 1 addieren sondern den jeweiligen Zahlenwert. Verstehst Du den Unterschied oder ist selbst sowas triviales für Dich schon zu viel?
Auf diesen Beitrag antworten »
Kevin33

Dann hatte ich dich wohl falsch verstanden .
Weil dauernd gesagt wird , ich hätte keinen Plan , dachte dass wäre falsch . Aber ok .

m_goalsReceivedTotal++; müsste ich nicht this. ...machen ?
Wieso soll ich überhaupt die Gesamtrore aufsummieren ? Wo steht das?

Ich dachte nur die Variablen die ich gemacht habe
Auf diesen Beitrag antworten »
Kevin33

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:
void CTeam::addResult(unsigned int goalsScored,unsigned int goalsReceived){


    if(goalsScored>goalsReceived &&  m_goalsScoredTotal>m_goalsReceivedTotal){

        m_winsTotal += 1;
        m_winsTotal = m_winsTotal+m_goalsScoredTotal;


    }
    if(goalsScored<goalsReceived &&  m_goalsScoredTotal<m_goalsReceivedTotal  ){

            m_lostTotal += 1;
            m_lostTotal= m_lostTotal+m_goalsReceivedTotal;



        }
    if(m_goalsScoredTotal==m_goalsReceivedTotal && goalsScored== goalsReceived){

                m_equalTotal += 1;
            }

}


Auf diesen Beitrag antworten »
Kevin33

m_goalsScoredTotal += goalsScored;

m_goalsReceivedTotal += goalsReceived;

Oder ist der letzten Aufgabenteil so gemeint ?
Auf diesen Beitrag antworten »
as_string

Zitat:
Original von Kevin33
m_goalsScoredTotal += goalsScored;

m_goalsReceivedTotal += goalsReceived;

Oder ist der letzten Aufgabenteil so gemeint ?

Ja, natürlich! Was denn sonst???
Auf diesen Beitrag antworten »
as_string

Zitat:
Original von Kevin33
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:
void CTeam::addResult(unsigned int goalsScored,unsigned int goalsReceived){


    if(goalsScored>goalsReceived &&  m_goalsScoredTotal>m_goalsReceivedTotal){

        m_winsTotal += 1;
        m_winsTotal = m_winsTotal+m_goalsScoredTotal;


    }
    if(goalsScored<goalsReceived &&  m_goalsScoredTotal<m_goalsReceivedTotal  ){

            m_lostTotal += 1;
            m_lostTotal= m_lostTotal+m_goalsReceivedTotal;



        }
    if(m_goalsScoredTotal==m_goalsReceivedTotal && goalsScored== goalsReceived){

                m_equalTotal += 1;
            }

}



Was soll denn das hier überhaupt???:
code:
1:
2:
        m_winsTotal += 1;
        m_winsTotal = m_winsTotal+m_goalsScoredTotal;

Du addierst zuerst 1 und dann nochmal m_goalsScoredTotal zu m_winsTotal??? Also letztlich addierst Du m_goalsScoredTotal+1 zu dem Wert, der in m_winsTotal ist?
Jetzt mal im Ernst: Hast Du auch nur irgendetwas dabei Dir gedacht oder hast Du das einfach mal so hingerotzt?
Mal abgesehen davon, dass das im if ja auch wieder überhaupt keinen Sinn ergibt, wie ich Dir jetzt schon mehrfach versucht hatte zu erklären: Du sollst im if() eine Bedingung haben, die wahr wird, wenn ein Spiel gewonnen ist, im nächsten, wenn es verloren ist, im letzten, wenn es unentschieden ist. Verstehst Du das wenigstens? Warum kommst Du dann auf die Idee hier immer noch die Total-Variablen mit zu überprüfen? Das muss man doch mit normalem gesunden Menschverstand schon verstehen dass das einfach nur Blödsinn ist!
Ich habe das ja noch nie gesagt, aber Du bist wirklich ein hoffnungsloser Fall. Da Du ja auch keinen einzigen Ratschlag befolgen willst, wird sich daran auch nie etwas ändern.

Gruß
Marco
Auf diesen Beitrag antworten »
Kevin33

Aber dann müssen doch diese if Bedingungen richtig sein oder ?
code:
1:
2:
3:
4:
5:
6:
7:
8:
 if(goalsScored>goalsReceived Spiel gewonnen 

goalsScored<goalsReceived  Mehr Tore kassiert ,also verloren

goalsScored== goalsReceived Gleichstand 



Sind diese if Bedingungen jetzt richtig?
Aus meiner Sicht schon großes Grinsen
Auf diesen Beitrag antworten »
as_string

So sind die Bedingungen, richtig.
Ohne Dich noch mehr verwirren zu wollen: Du solltest hier mit if() {} else if() {} else{} arbeiten. Dann wird das zweite if nur überprüft, wenn das erste nicht zugetroffen hat und die letzte Bedingung ausgeführt, wenn die ersten beiden ifs nicht wahr geworden sind. Wenn das eine weder kleiner noch größer als das andere ist, muss es ja gleich sein, so dass Du Dir die letzte Überprüfung dann sparen könntest.
Aber das ist nicht weiter wichtig, wenn Du das nicht gleich verstanden hast, dann lass das einfach erstmal so, wie Du es jetzt hast. Das ist schon auch richtig.

So, jetzt musst Du also überlegen, was passieren soll in den einzelnen Fällen. Du sollst ja im Falle eines Sieges die eine Member-Variable für die Summe aller gewonnen Spiele hoch zählen, im zweiten Fall die für die verlorenen und im dritten dann die für unentschieden.
Das Hochzählen mach am besten mit ++, also
code:
1:
var++;
Das ist die kürzeste Form, eine Ganzzahl-Variable um eins hoch zu zählen. Keiner schreibt
code:
1:
var += 1;
oder sogar
code:
1:
var = var + 1
wenn das auch alles richtig ist.

Unabhängig von dem if musst Du die beiden total-Variablen für die Tor/Gegentor-Summen jeweils um die Anzahl der für dieses Spiel erzielten Tore bzw. kassierten Gegentore hochzählen.

Dann endlich wären wir eventuell einen Schritt weiter... unglücklich

Gruß
Marco
Auf diesen Beitrag antworten »
Kevin33

Zuerst mal noch eine Frage das mit dem m_lostTotal+=1 , sollte ich doch machen oder ?

Das was du willst ist ja : m_goalsReceivedTotal++;
Und in dem anderen Fall m_goalsScoredTotal++, machen .

Muss ich diese beide Sachen zusätzlich machen ?

Weil das stand ja nicht so in der Aufgabe großes Grinsen
Auf diesen Beitrag antworten »
Kevin33

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:

#include<iostream>
using namespace std;
#include<string>
#include"CTeam.h"

CTeam::CTeam(string name ){

    m_teamName = name;
}

std::string CTeam::getName(){
    return m_teamName;

    }

void CTeam::addResult(unsigned int goalsScored,unsigned int goalsReceived){


    if(goalsScored>goalsReceived ){

        m_winsTotal += 1;
        m_goalsScoredTotal += goalsScored;
        m_goalsScoredTotal++;




    }
    if(goalsScored<goalsReceived   ){

            m_lostTotal += 1;
            m_goalsReceivedTotal += goalsReceived;
            m_goalsReceivedTotal++;



        }
    if( goalsScored== goalsReceived){

                m_equalTotal += 1;
                m_equalTotal++;
            }

}




So würde das dann als Code aussehen .
Die fragen sind ja im vorletzten Beitrag LOL Hammer
Auf diesen Beitrag antworten »
Kevin33

Ich habe den weiteren Aufgabenteil auch schon ein wenig bearbeitet :

Mal sehen ob ich die Funktion richtig implementiert hab

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
unsigned int const CTeam::getTotalPoints(){

	int tmp = 0;
	 if(m_goalsScoredTotal>m_goalsReceivedTotal ){

		 tmp += 3;
		 return tmp;
	 }

	 if(m_goalsScoredTotal<m_goalsReceivedTotal   ){

		 return tmp;

		 }

	 if(m_goalsScoredTotal==m_goalsReceivedTotal   ){
		 tmp += 1;
		 return tmp;
	 }

Auf diesen Beitrag antworten »
Kevin33

Oder soll ich es so : return tmp +=3 ; ausgeben bei der getter Methode ?
Auf diesen Beitrag antworten »
as_string

Zitat:
Original von Kevin33
Zuerst mal noch eine Frage das mit dem m_lostTotal+=1 , sollte ich doch machen oder ?

Das was du willst ist ja : m_goalsReceivedTotal++;
Und in dem anderen Fall m_goalsScoredTotal++, machen .

Muss ich diese beide Sachen zusätzlich machen ?

Weil das stand ja nicht so in der Aufgabe großes Grinsen

Nein, Du verstehst ja schon wieder gar nichts! Was hab ich oben geschrieben, was macht += 1, was macht ++? Was willst Du mit den einzelnen Membervariablen machen?

Nochmal von vorne: mache mir zuerst eine Tabelle schreibe in die Spalten die fünf Membervariablen. Dann mache vier Zeilen mit 3:2 gewonnen, 2:2 unentschieden, 1:2 verloren und 0:0 unentschieden. Schreibe für die 4 Ergebnisse jeweils die Werte der Variablen auf, so wie wenn diese Spiele nacheinander stattgefunden hätten.

Mach die Tabelle, dann sehen wir weiter!
Auf diesen Beitrag antworten »
Kevin33

Ja aber hier steht es doch so oder nicht?

Wenn die Anzahl der eigenen Tore größer ist als die Anzahl der Gegentore, wird das das Attribut m_winsTotal um 1 erhöht, bei mehr Gegentoren als eigenen Toren das Attribut m_lostTotal und bei gleich vielen Toren das Attribut m_equalTotal.

Was du meinst ja ist ja ,das man die Summe:

m_goalsScoredTotal++; hochzählt .
Auf diesen Beitrag antworten »
as_string

Zitat:
Original von Kevin33
Ich habe den weiteren Aufgabenteil auch schon ein wenig bearbeitet :

Mal sehen ob ich die Funktion richtig implementiert hab

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
unsigned int const CTeam::getTotalPoints(){

	int tmp = 0;
	 if(m_goalsScoredTotal>m_goalsReceivedTotal ){

		 tmp += 3;
		 return tmp;
	 }

	 if(m_goalsScoredTotal<m_goalsReceivedTotal   ){

		 return tmp;

		 }

	 if(m_goalsScoredTotal==m_goalsReceivedTotal   ){
		 tmp += 1;
		 return tmp;
	 }


Auch wieder komplett falsch. Das ist schon ziemlich heftig. In der Aufgabe ist recht genau beschrieben, wie man das rechnen muss und jeder, der schon mal Bundesliga geschaut hat, kennt die Berechnungsmethode.
Um die Punkte in der Tabelle auszurechnen, interessieren da die gesamten Tore und/oder Gegentore? Warum vergleichst Du die denn? Was ist in der Aufgabe geschrieben, wie das berechnet werden sollte? Da steht: "für jedes gewonnene Spiel erhält das Team 3 Punkte". Wieviele Spiele hat das Team denn gewonnen, in welcher Membervariable steht das denn drin? Hast Du überhaupt irgendetwas von dem verstanden, was wir hier machen???
Also, das was Du ablieferst hat nichts mit "ich kann halt nicht programmieren" zu tun. Noch nicht mal mit Faulheit, glaube ich. Da fehlts einfach irgendwo komplett. Ich mache mir da keine Hoffnungen mehr...
Auf diesen Beitrag antworten »
Kevin33

Zitat:
Original von as_string
Zitat:
Original von Kevin33
Ich habe den weiteren Aufgabenteil auch schon ein wenig bearbeitet :

Mal sehen ob ich die Funktion richtig implementiert hab

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
unsigned int const CTeam::getTotalPoints(){

	int tmp = 0;
	 if(m_goalsScoredTotal>m_goalsReceivedTotal ){

		 tmp += 3;
		 return tmp;
	 }

	 if(m_goalsScoredTotal<m_goalsReceivedTotal   ){

		 return tmp;

		 }

	 if(m_goalsScoredTotal==m_goalsReceivedTotal   ){
		 tmp += 1;
		 return tmp;
	 }


Auch wieder komplett falsch. Das ist schon ziemlich heftig. In der Aufgabe ist recht genau beschrieben, wie man das rechnen muss und jeder, der schon mal Bundesliga geschaut hat, kennt die Berechnungsmethode.
Um die Punkte in der Tabelle auszurechnen, interessieren da die gesamten Tore und/oder Gegentore? Warum vergleichst Du die denn? Was ist in der Aufgabe geschrieben, wie das berechnet werden sollte? Da steht: "für jedes gewonnene Spiel erhält das Team 3 Punkte". Wieviele Spiele hat das Team denn gewonnen, in welcher Membervariable steht das denn drin? Hast Du überhaupt irgendetwas von dem verstanden, was wir hier machen???
Also, das was Du ablieferst hat nichts mit "ich kann halt nicht programmieren" zu tun. Noch nicht mal mit Faulheit, glaube ich. Da fehlts einfach irgendwo komplett. Ich mache mir da keine Hoffnungen mehr...


Das Problem ist das ich in der Funktion ,also in der if V`Bedingung das goalsReceived und goalsscored nicht benutzen konnte ?
Da er es in der Funktion nicht erkannte .
Sonst könnte man eigentlich die gleichen if Bedingungen fast wie bei addrESULT NUTZENß
Auf diesen Beitrag antworten »
as_string

Zitat:
Original von Kevin33
Ja aber hier steht es doch so oder nicht?

Wenn die Anzahl der eigenen Tore größer ist als die Anzahl der Gegentore, wird das das Attribut m_winsTotal um 1 erhöht, bei mehr Gegentoren als eigenen Toren das Attribut m_lostTotal und bei gleich vielen Toren das Attribut m_equalTotal.

DAS ist ja auch das einzige, was stimmt. Dazu sage ich nur: eins hochzählen tut auch m_winsTotal++; da brauchst Du nicht +=1 schreiben, aber das hab ich schon aufgegeben...
Zitat:
[i]Original von Kevin33[/i
Was du meinst ja ist ja ,das man die Summe:

m_goalsScoredTotal++; hochzählt .

Nein eben nicht! Das zählt doch zu der Variablen genau 1 dazu, Du willst doch aber einen anderen Wert addieren und nicht immer 1! Wie zum Geier kommst Du immer wieder und willst bei den Toren und Gegentoren genau 1 dazu addieren? Das rafft doch sogar der größte Vollidiot, dass man da natürlich die Anzahl der gefallenen Tore und nicht einfach nur immer 1 dazu addieren muss!
Ich gebs auf, soviel Planlosigkeit ist mir wirklich noch nie unter gekommen!
Auf diesen Beitrag antworten »
Kevin33

m_winstOTAL gewonnene SPiele .

m_lostTotal verlorene Spiele geschockt

Da habe ich Mist gebaut .

Irgendwie misverstehen wir uns zu oft .

Hier habe ich doch
void CTeam::addResult(unsigned int goalsScored,unsigned int goalsReceived){


if(goalsScored>goalsReceived ){

m_winsTotal += 1;
m_goalsScoredTotal += goalsScored;





}
if(goalsScored<goalsReceived ){

m_lostTotal += 1;
m_goalsReceivedTotal += goalsReceived; hochgezählt?




}
if( goalsScored== goalsReceived){

m_equalTotal += 1;

}

}
Auf diesen Beitrag antworten »
as_string

Zitat:
Original von Kevin33
Das Problem ist das ich in der Funktion ,also in der if V`Bedingung das goalsReceived und goalsscored nicht benutzen konnte ?
Da er es in der Funktion nicht erkannte .
Sonst könnte man eigentlich die gleichen if Bedingungen fast wie bei addrESULT NUTZENß

Nein, das ist alles völliger Quatsch! Die andere Methode addResult() wird für jedes einzelne Spiel aufgerufen und ihr werden die Tore/Gegentore für jedes einzelne Spiel übergeben. Dort wird erst alles aufsummiert, was man nachher auswerten will.
Diese aufsummierten Werte verwendet man in der am Ende aufgerufenen Methode getTotalPoints(). Da hast Du doch schon aufsummiert die Anzahl gewonnener und unentschiedener Spiele, da brauchst Du gar kein if () mehr!
Du raffst einfach überhaupt gar nicht, um was es in dieser Aufgabe geht. Das war zwar bei den anderen auch so, aber diese hier ist jetzt wirklich extrem einfach und da hast Du auch überhaupt keinen Durchblick!

Mach mal meine Tabelle!
Auf diesen Beitrag antworten »
Kevin33

Diese aufsummierten Werte verwendet man in der am Ende aufgerufenen Methode getTotalPoints(). Da hast Du doch schon aufsummiert die Anzahl gewonnener und unentschiedener Spiele, da brauchst Du gar kein if () mehr!


Ja aber man muss doch irgendwie Punkte erhalten ?
Das habe ich dann irgendwie in dieser tmp Variable berechnet ?

Dann müsste ich ja sozusagen zuerst die Methode zurückegeb mittels return....
und dann einfach tmp Variable um 3 und beim Verlieren 1 oder wie auch immer?
Auf diesen Beitrag antworten »
as_string

Zitat:
Original von Kevin33
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:
    if(goalsScored>goalsReceived ){

        m_winsTotal += 1;
        m_goalsScoredTotal += goalsScored;
       




    }
    if(goalsScored<goalsReceived   ){

            m_lostTotal += 1;
            m_goalsReceivedTotal += goalsReceived;  hochgezählt?
            



        }
    if( goalsScored== goalsReceived){

                m_equalTotal += 1;
               
            }

}

Du musst doch zu den beiden Torsummen die jeweils gefallenen Tore immer addieren! So addiert Du doch nur zu der einen Summe, wenn das Spiel gewonnen wurde, zu der anderen, wenn das Spiel verloren wurde und zu keiner, wenn es unentschieden ausging!
Das kann doch nicht sein, dass das jemand nicht kapiert!
Wenn Du ein Spiel 3:2 gewonnen hast, dann zählst Du doch nicht nur zu Deinen Gesamttoren 3 dazu, sondern musst doch zu Deinen Gesamtgegentoren auch die 2 dazu zählen!

MACH ENDLICH DIE TABELLE!
Auf diesen Beitrag antworten »
as_string

Zitat:
Original von Kevin33
Diese aufsummierten Werte verwendet man in der am Ende aufgerufenen Methode getTotalPoints(). Da hast Du doch schon aufsummiert die Anzahl gewonnener und unentschiedener Spiele, da brauchst Du gar kein if () mehr!


Ja aber man muss doch irgendwie Punkte erhalten ?
Das habe ich dann irgendwie in dieser tmp Variable berechnet ?

Dann müsste ich ja sozusagen zuerst die Methode zurückegeb mittels return....
und dann einfach tmp Variable um 3 und beim Verlieren 1 oder wie auch immer?

Das ist alles der größte Bullshit, lass es einfach sein, Du bist schlicht zu dumm dafür und ich meine das nicht als Beleidigung sondern einfach als schlichte Tatsache.
Auf diesen Beitrag antworten »
Kevin33

m_winstOTAL gewonnene SPiele .

m_lostTotal verlorene Spiele

Wenn ich die 2 Werte zurückgeben würde brigt mir das ja nichts , da ich ja auch irgendwie Punkte vergeben muss?
WIe soll ich Punkte vergeben ohne tmp Variable ?
Auf diesen Beitrag antworten »
as_string

na dreimal winsTotal plus 1mal equalTotal natürlich! Das weiß doch wirklich jedes Kind, wie kann es sein, dass Dir das nicht klar ist? Das ist doch quasi genau so in der Aufgabe geschrieben, da muss man doch noch nicht mal groß überlegen!
tmp Variable... woher hast Du den Quatsch überhaupt???

Wo ist meine Tabelle? Ach was, tue Dir und der restlichen Welt einen Gefallen und lass es am besten einfach sein!
 
Neue Frage »
Antworten »


Verwandte Themen