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

1

27.02.2005, 13:16

do while problem

Hallo

Ich wollte mal was aus dem buch "C++ fuer Spieleprogrammierer" nach programmieren doch hab ich da nen problem. Ich habe vor Listing 5_7 nachzubauen. bzw aehnlich

naja das Problem ist ads wenn ich 1 druecke das der dann ne endlosschleife macht und immer den Text: "Welchem Team willst du angehoeren?(1-2): " schreibt. ich finde den fehler nich ><


Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>

using namespace std;

int main()
{
//struct
struct S_SPIELER
{
int n_TEAM;
char NAME[20];
};

S_SPIELER SS_MULTI[4];

for (int i=1; i<=4; i++)
{
cout << "Spieler " << i << endl << "---" << endl << "Name: ";
cin.get(SS_MULTI[i].NAME,19);
cout << endl << endl;


do
{

cout << "Welchem Team willst du angehoeren?(1-2): ";
cin >> SS_MULTI[i].n_TEAM;

}while ((SS_MULTI[i].n_TEAM != 1)  &&  (SS_MULTI[i].n_TEAM != 2));
}
cout << endl;

return 0;
}


wie waere das den richtig? BTW im buch geguckt hab ich

Sicaine

unregistriert

2

27.02.2005, 13:51

Das lustige daran is nur, dass Da son Überlauf stattfindet, wenn man nen Buchstabe reinhaut. Must getline verwenden und den String dann in ne zahl umwandeln.

3

27.02.2005, 14:07

der macht das ja auch bei ner 1 oder so. Da is dann ja kein ueberlaufen

PD

unregistriert

4

27.02.2005, 18:09

Ich weiß net ob es dein Problem behebt (wohl eher nichT) aber du hast nen großen Fehler (den er wohl mit überlauf meinte):
Der erste Index eines Arrays ist grundsätzlich 0! Ein Array mit 4 Elementen (wie du es hast) hat also die Indizies (schreibt man das so?) 0-3. Demnach muss deine Schleife bei i=0 beginnen und bis i<=3 oder i<4 laufen. Sonst will er auf element [4] zugreifen das aber nicht existiert -> Fehler ;)

Ansonsten seh ich spontan ehrlich gesagt keinen Fehler...

john

Alter Hase

Beiträge: 786

Beruf: Schüler

  • Private Nachricht senden

5

27.02.2005, 18:28

Lösung

Also ich hab dir das Programm mal so gemacht, wie du es wohl meintest.
Guck s dir einfach mal an.

Ich weiß jetzt gerade nicht, wie das Beispielprogramm im Buch genau aussieht (mein Buch hab ich jemandem gegeben der wollte es sich mal angucken).

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>

using namespace std;

int main()
{
//struct

struct S_SPIELER
{
int n_TEAM;
char NAME[20];
};

S_SPIELER SS_MULTI[3];

for (int i=0; i<=3; i++)
{
cout << "Spieler " << i+1 << endl << "---" << endl << "Name: ";
cin >> SS_MULTI[i].NAME, 19;

cout << endl << endl;




cout << "Welchem Team willst du angehoeren?(1-2): ";
cin >> SS_MULTI[i].n_TEAM;


}
cout << endl;

return 0;
}
mfg
john

Sicaine

unregistriert

6

27.02.2005, 18:51

Hab mir den code garnich so angesehen hast aber recht.

@john wenn du ein array mit 3 elementen erzeugst, kannste nur auf 0, 1 und 2 zugreifen.

john

Alter Hase

Beiträge: 786

Beruf: Schüler

  • Private Nachricht senden

7

27.02.2005, 19:20

Zitat von »"Sicaine"«


@john wenn du ein array mit 3 elementen erzeugst, kannste nur auf 0, 1 und 2 zugreifen.


Das weiß ich.
Ich hab mich nicht um die 4 Spieler gekümmert.
Ich wollte ihm bloß diese Endlosschleife rausbringen.
mfg
john

8

27.02.2005, 20:44

und laeuft auch danke ;)
doch wie mache ich das sonst das der nur 2 antworten nimmt. in dem fall waere doch ne do while am besten oder?

PD

unregistriert

9

27.02.2005, 20:46

super, löst du alle probleme nach dem motto "Funktioniert nicht -> Weg damit"? *lol*

Lass am besten mal den debugger drüber laufen und schau was er dir nach cin in m_TEAM rein schreibt.

10

27.02.2005, 21:17

Zitat

super, löst du alle probleme nach dem motto "Funktioniert nicht -> Weg damit"? *lol*

an wen war das genau gerichtet?
ich bin so naemlich nich ^^' eigentlich.

Aber danke. habs neu geschrieben und dann gings.
danke an alle ;)

Werbeanzeige