Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

02.01.2011, 21:40

Scheint an was anderem zu liegen.
Die Funktion sollte ja eigentlich danach nach dem Namen fragen. Tut sie aber nicht mehr Oo

EDIT:

AAAHHH
Durch das kopieren hab ich natürlich nen Fehler gemacht xD
Die schleife sollte eigentlich bezwecken das die Zahlen im richtigen Feld liegen.
Ich habe den falschen Wert ersetzt.
Die 5 sollte ersetzt werden nicht das x durch die Konstante...
tschuldigung :D

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void Feldbesetzen()
{
int x,y;
do {//x Koordinate abfragen
cout << "x-Position (1-5): ";
cin >> x;
}while(x < GrenzeHorizontalMin || x > GrenzeHorizontalMax);
do {//y Koordinate abfragen
cout << "y-Position (1-5): ";
cin >> y;
}while(y < GrenzeVertikalMin || y > GrenzeVertikalMax);

cout << "Name: ";
cin.get(a_Spielfeld[GrenzeHorizontalMax-1][GrenzeVertikalMax-1].Name,29);

}

heißt das natürlich.
Aber danach fällt er immer noch in eine Endlosschleife..
Was ich nicht verstehen kann. Danach sollte er doch den Namen abfragen ... mh

Last Edit ;)

cin.ignore(); mit dem Befehl vor dem cin.get funtkioniert es jetzt.
Aber warum?

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »easyMaxi« (02.01.2011, 21:50)


GR-PA

Treue Seele

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

12

02.01.2011, 22:06

Einem Anfänger Makros zu empfehlen... also echt...
Konstanten erstellt man unter C++ mit const, nicht mit #define. Dann sind sie auch keine tickenden Zeitbomben die Namespaces etc. vollkommen ignorieren, keinen Datentyp haben und jederzeit bereit sind Probleme zu verursachen.
#define sollte man genau wie globale Variablen nur dann einsetzen, wenn es nötig und sinnvoll ist, also nicht für Konstanten, da ist es nämlich nicht nur nicht sinnvoll, sondern gefährlich, häßlich und schlecht.
Signaturen werden überbewertet

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

13

02.01.2011, 22:08

Weil cin.get() Daten aus dem Input-Stream liest. Wenn sich davor irgendwelche Daten im Stream befinden, werden diese gelesen und sofort weitergemacht. Du hättest so gar keine Chance etwas einzugeben. cin.ignore() löscht den Inhalt des Input-Streams, so dass cin.get() auf Daten von dir warten muss.

Soo schlimm sind Makros nun auch wieder nicht, wenn man sie mit bedacht einsetzt.

14

02.01.2011, 22:15

Zitat

Soo schlimm sind Makros nun auch wieder nicht, wenn man sie mit bedacht einsetzt.

Wenn es bessere Wege gibt, dann sollte man diese auch wählen.

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

15

02.01.2011, 22:46

Wenn es bessere Wege gibt, dann sollte man diese auch wählen.

Ja das stimmt, ich war mir im Moment nur nicht darüber bewusst, dass es auch einfach mit const geht.

16

02.01.2011, 22:59

^^
Okey.
Jetzt hab ich das ganze nochmal nachgelesen alles funzt und ich bin ein ganzes Stückchen schlauer (:
Danke

Werbeanzeige