Implementierungsproblem |
Kevin33 unregistriert
|
|
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?
|
|
21.10.2017 18:14 |
|
|
as_string
Haudegen
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
|
|
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
|
|
22.10.2017 03:51 |
|
|
Kevin33 unregistriert
|
|
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
|
|
22.10.2017 10:04 |
|
|
as_string
Haudegen
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
|
|
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
|
|
22.10.2017 13:13 |
|
|
as_string
Haudegen
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
|
|
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!
|
|
22.10.2017 13:25 |
|
|
Kevin33 unregistriert
|
|
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;
}
}
|
|
|
|
22.10.2017 13:43 |
|
|
Kevin33 unregistriert
|
|
Aber müsste ich in der if bedingung auch nicht noch zusätzlich mit&& einbauen , das
m_goalsScoredTotal> m_goalsReceivedTotal ?
|
|
22.10.2017 13:48 |
|
|
as_string
Haudegen
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
|
|
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?
|
|
22.10.2017 13:53 |
|
|
Kevin33 unregistriert
|
|
Ich dachte dass ich deine Worte in meinem Code umgewandelt habe
q
Naja ok . Ich habe halt sau schwierigkeiten mit dem programmieren .
|
|
22.10.2017 13:59 |
|
|
as_string
Haudegen
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
|
|
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
|
|
22.10.2017 14:34 |
|
|
Kevin33 unregistriert
|
|
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
|
|
22.10.2017 14:48 |
|
|
as_string
Haudegen
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
|
|
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!
|
|
22.10.2017 15:13 |
|
|
as_string
Haudegen
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
|
|
Was ist eigentlich aus dem Aufsummieren der Tore/Gegentore geworden? Sollen die sich von alleine addieren???
|
|
22.10.2017 15:14 |
|
|
Kevin33 unregistriert
|
|
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
|
|
22.10.2017 15:17 |
|
|
as_string
Haudegen
Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg
|
|
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!
|
|
22.10.2017 15:32 |
|
|
|