Zum Inhalt springen

Eingabe funktioniert nicht (cin.get() )


Empfohlene Beiträge

Geschrieben

Hi,

ich will ein Programm schreiben, dass erst Abfragt wie viele Spieler mitspielen (Es geht um Dart).

Die Eingabe ist begrenzt von 1 bis 4 Spieler.

Danach sollen die Namen der Spieler abgefragt werden und genau hier fängt mein Problem an.

Ich habe zuerst eine Struktur angelegt S_Spieler mit den Variablen int Punkte und char Name[30];

Wenn ich das Programm starte kann ich jedoch keine Namen eingeben. Das Programm geht in einem durch nachdem man die Anzahl der Spieler eingegeben hat.

Hier der Quellcode:

#include <iostream>


using namespace std;


int main()

{

	// Spieler Struktur


	struct S_Spieler

	{

		int Punkte;

		char Name[30];

	};


	// Variablen

	S_Spieler Spieler[4];

	int iAnzSpieler = 0;


	// Spieler abfragen

	do {


	cout << "Wie viele Spieler: ";

	cin >> iAnzSpieler;


	} while (iAnzSpieler > 4 || iAnzSpieler < 1);




	for(int i = 0; i<iAnzSpieler; i++)

	{

		Spieler[i].Punkte = 501;


		cout << "Spieler " << i+1 << endl;

		cout << "Dein Name: ";

		cin.get (Spieler[i].Name, 29);



	}




	return 0;


}

Über eine Antwort wär ich sehr dankbar, denn ich komme da irgendwie nicht weiter...

Das Programm an sich soll die Punkte von 501 auf 0 zählen. So das man bei nicht elektronischen Dartscheiben nicht selber zählen muss^^ Jeder Spieler gibt also nach seinen 3 Würfen seine erzielte Punktzahl ein und das Programm Subtrahiert diese dann von der zuletzt eingespeicherten Gesamtzahl.

Gruss

3tiXoz

Geschrieben (bearbeitet)

dein problem liegt bei cin.get()

dies ließt aus dem Tastatur Puffer das letzte Zeichen ein. Hier ist das ein Enter womit er sofort weiter springt.

Edit: nutze einfach cin>>Spieler.Name;

Bearbeitet von chooter696
Geschrieben


...


// Variablen

	S_Spieler Spieler[4];

	int iAnzSpieler = 0;

        [COLOR="Red"][b]char c;[/b][/COLOR]


...


cout << "Wie viele Spieler: ";

cin >> iAnzSpieler;

[COLOR="Red"][b]cin.get(c);[/b][/COLOR]


...



cout << "Spieler " << i+1 << endl;

cout << "Dein Name: ";

cin.get (Spieler[i].Name, 29);

[COLOR="Red"][b]cin.get(c);[/b][/COLOR]

Versuch's mal damit ;)

Geschrieben

Hey,

sry für die späte Antwort^^

@chooter696:

Danke, hat sofort funktioniert. Aber die Erklärung versteh ich nicht so ganz^^ Wieso ist das letzte Zeichen ein Enter? Und wie kann ich den Tastatur Buffer leeren? :confused:

Gruss

3tiXoz

Geschrieben
Weswegen man einfach das letzte Zeichen auslesen und im Nirvana verschwinden lassen kann.

Da kannst du auch gleich sync aufrufen.

This effectively means that the unread characters in the buffer are discarded.

:floet:

PS: Man kann Enter auch einfach ignoren.

Geschrieben

Danke für die ganzen Antworten. Jetzt versteh ich wenigstens was es mit dem cin.get© auf sich hatte^^

Hab jetzt einfach cin >> benutzt und funktioniert zumindest jetzt alles wies soll^^

Gruss

3tiXoz

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...