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

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

11

16.02.2009, 12:59

Zitat von »"JoNnY"«


Wie kann ich das "goto" ersetzen?
Ich weis, dass man goto nicht verwenden soll wenn es vermeidbar ist und ich bin mir ziemlich sicher, dass es hier möglich ist.
Aber wie?
Ich hätte gerne, dass bei einer fehlerhaften Eingabe wieder oben bei der Eingabe eingesprungen wird.
Wie könnte ich das ohne goto verwirklichen?


indem du eine schleife drum herum baust die nur dann beendet wird wenn die eingabe korrekt ist.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

12

16.02.2009, 13:01

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
bool loop = false;

do
{
cout<<"Welche Farbe magst du am liebsten (a, b, c)? : ";
cin>>Auswahl;

switch (Auswahl)
{
case (a):
{
mache_irgendwas;
}break;

case (b):
{
mache_irgendwas;
}break;

case (c):
{
mache_irgendwas;
}break;

default:
{
cout<<"Fehlerhafte Eingabe!"<<endl;
loop = true;
}
}while(loop); 


Das nächste mal bitte eingerückt..

S.Seegel

2x Contest-Sieger

  • Private Nachricht senden

13

16.02.2009, 13:40

Nicht ganz. Was passiert, wenn die erste Eingabe falsch war ? :p

14

16.02.2009, 14:57

Zitat

Nicht ganz. Was passiert, wenn die erste Eingabe falsch war ?

Wenn du das von drakon meinst, das dürfte doch stimmen!?

S.Seegel

2x Contest-Sieger

  • Private Nachricht senden

15

16.02.2009, 15:43

Nein. loop wird auf false initialisiert und bei einer falschen Eingabe auf true gesetzt. Und da das nicht wieder zurückgenommen wird, hat man eine Endlosschleife.
Es fehlt einfach nur ein loop = false; in der Schleife vor dem switch-Statement.

16

16.02.2009, 17:51

Jop stimmt. Danke für eure Hilfe ich habe jetzt mein goto weg und mein Kumpel konnte die Exe öffnen.

:D
------------------

Jonny :)

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

17

16.02.2009, 18:37

Zitat von »"S.Seegel"«

Nicht ganz. Was passiert, wenn die erste Eingabe falsch war ? :p


Mist. :)
Das kommt davon, wenn man sein jährliches do/while eben mal so in der Mittagspause verbrät. ( ich brauch das wirklich nur so einmal im Jahr. :p)

Lerikson

Alter Hase

Beiträge: 412

Wohnort: nördlich von Hamburg

Beruf: Schüler

  • Private Nachricht senden

18

18.02.2009, 16:16

mal ne Frage:
Wieso nimmst du eigentlich eine do/while Schleife(Loop)[ <- weiß nicht welchen Ausdruck ihr bevorzugt ] man kann doch auch eine while Schleife nehmen dann müsste man auch weniger schreiben oder?
Errare est humanum. -Windows ist menschlich ;-)

19

18.02.2009, 16:23

Mit der do-while ist sichergestellt, dass sie mindestens 1 Mal durchlaufen wird, was es hier ja auch soll.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

20

18.02.2009, 17:56

Zitat von »"Lerikson"«

mal ne Frage:
Wieso nimmst du eigentlich eine do/while Schleife(Loop)[ <- weiß nicht welchen Ausdruck ihr bevorzugt ] man kann doch auch eine while Schleife nehmen dann müsste man auch weniger schreiben oder?


Man kann es sicher auch anders machen, aber ich habe es hier so gemacht, weil ich so deinen Code nicht gross umschreiben musste. Üblicherweise hätte ich da wahrscheinlich schon eine while-Schleife gehabt.. Auch wenn es so eigentlich recht dem entspricht für was do/while gedacht ist.

Werbeanzeige