C++ Ich finde den Fehler nicht?

... komplette Frage anzeigen

4 Antworten

Oha...

1. Warum machst du die Spieleranzahl als char? Nimm doch lieber ein int/short/unsigned

2. Folglich im Switch die '' bei den Zahlen wegnehmen

3. In einem char, wie du die Spielernamen hast, kannst du keinen Namen speichern, da es nur EINEN (!!!) Buchstaben enthält. Nimm einen std::string

Wenn du das alles geändert haben solltest, sollte es gehen. Ich glaube, dass das Problem daran liegt, dass du wenn du einen Namen mit mehreren Buchstaben angibst, der SpielerName1 nur den ersten, SpielerName2 den zweiten usw. erhält, und automatisch weitergegeben wird, weshalb nichtsmehr eingegeben werden muss.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Hondoldar
10.01.2016, 16:53

Danke erstmal , aber jetzt ist bei jedem cin bei den ,,>>'' ein Fehler

Fehler : Error no Operator

0

Du hast allen voran ein Problem mit den Variablen Namen und Strings können nicht im Datentyp char gespeichert werden, bestenfalls in einem charArray also char[30]. Das bedeutet dein String darf maximal 30 Zeichen haben, für C++ ist aber die Verwendung von std::string vorzuziehen.

Ob es bei C++ auch gilt weis ich nicht, aber bei C gibt es bezüglich der scanf Funktion immer wieder dass Problem, dass scanf zwar die Zeile einließt der Linebreak Character bleibt aber im IO Buffer stehen und der nächste aufruf von scanf liefert dann einen leeren String zurück.

Versuch mal nach einem cin ein getchar zu geben. Ich weis aber wie gesagt nicht ob das für das cin auch gilt, aber sieht nicht so aus sonst würde er die erste Spielereingabe nicht zulassen und die zweite aber schon.

Setze außerdem bei jedem Casenlock nach dem case : eine Klammer also { und mach sie vor dem nächsten case zu.

Wsa gibt er am Schluss als Spielernamen zurück?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Hondoldar
10.01.2016, 16:58

wenn ich jeden case mit { und } einklammere dann wird jedes cout und cin rot weil der using Namespace std; nicht mehr wirksam ist :) Ich werde kurz überall std hinschreiben warte kurz

0

Ich kenne mich mit cin<< nicht so aus, aber ich denke, dass die einzige logische Möglichkeit daraus besteht, dass cin<< aus irgendeinem Grund hier einen Integer liefert. Änder bei deiner Abfrage mal den Datentyp der Literale.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Wissbegieriger2
10.01.2016, 16:25

(Mach also aus '1' 1 usw.)

0
Kommentar von Hondoldar
10.01.2016, 16:26

cin fordert den Nutzer auf eine Eingabe zu machen diese Eingabe kann dann in einer Variable gespeichert werden

0
Kommentar von Hondoldar
10.01.2016, 16:30

Wenn ich anstatt '1' nur 1 schreibe stürzt das Programm ab mit der Fehlermeldung dass die Variable Spieler4 nicht inizialisiert sei und die Datentypen der Variablen darf ich ebenfalls nicht ändern weil das Switch zeug sonst nicht funktioniert

0
Kommentar von DoTheBounce
10.01.2016, 16:43

Nein, das Problem ist hier einzig und allein die vollkommen falsche Verwendung von Variablen. Siehe JOT4T4s Antwort

0

Ein Großes Dankeschön an alle habe es jetzt hinbekommen :)

http://pastebin.com/s2LZkJZx

Ich weiß nicht wem ich die hilfreichste Antwort geben sollte , ihr wart alle eine RIESIGE Hilfe :D

Vielen Dank =)

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?