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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...