Frage von Hondoldar, 81

C++ Ich finde den Fehler nicht?

Guten Tag , ich bin ein Programmier ,,Anfänger'' also ein wenig was kann ich schon aber ich verzweifle an meinem aktuellen testprogramm ... Man soll zuerst auswählen wie viele Spieler teilnehmen und dann die Namen für die Spieler eingeben allerdings fragt er jetzt nur nach der Spieleranzahl dann soll man eine Eingabe machen und dann rattert er alles runter ...

Bitte helft mir =( Code : http://pastebin.com/9BWxEM9C Ich programmiere mit Visual Studio 2015 Community. Da ich Anfänger bin freue ich mich über jeden meiner Fehler den ihr mir sagen könnt =)

Ich freue mich über jede Hiflreiche Antwort sehr , Mit Freundlichen Grüßen Timo.

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von J0T4T4, 32

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.

Kommentar von Hondoldar ,

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

Fehler : Error no Operator

Kommentar von DoTheBounce ,

Hast du auch

#include <string>

ergänzt?

Kommentar von Hondoldar ,

Nein hatte ich nicht danke =)

Antwort
von PeterKremsner, 35

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?

Kommentar von Hondoldar ,

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

Antwort
von Wissbegieriger2, 49

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.

Kommentar von Wissbegieriger2 ,

(Mach also aus '1' 1 usw.)

Kommentar von Hondoldar ,

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

Kommentar von Wissbegieriger2 ,

Das weiß ich, ich weiß aber nicht, ob Zahlen als Char oder als Integer geliefert werden. Bei letzterem musst du in deiner Abfrage den Typ der Literale ändern.

Kommentar von Hondoldar ,

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

Kommentar von Wissbegieriger2 ,

Wartem mal kurz, ich starte visual studios

Kommentar von Wissbegieriger2 ,

ich habe deinen Code verbessert mus nur noch auf diese Seite tun und dir den Link schicken, ich hatte nicht  Recht!

Kommentar von Wissbegieriger2 ,
Kommentar von Hondoldar ,

Jetzt buchstabiert er einen Namen =)

Kommentar von DoTheBounce ,

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

Kommentar von Hondoldar ,

Wenn ich andere Variablen nutze kommt ein Fehler bei cin siehe Kommentar bei JOT4T4s

Kommentar von DoTheBounce ,

Siehe meine Antwort dort

Antwort
von Hondoldar, 9

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 =)

Keine passende Antwort gefunden?

Fragen Sie die Community