Hallo kater_365,
An den netten Menschen: Verstehe das jetzt noch nicht so.
Diese Schleife läuft endlos, weil die Bedingung immer wahr ist. Die Schleife führt immer die gleiche, leere Anweisung aus.
while(true)
{
;
}
Angepasst an dein Beispiel in etwa:
int countdownStart;
bool loop = true;
while(loop) //s. obiges Beispiel
{
cin >> countdownStart;
if(cin.fail() == false)
/*
War der Nutzer brav, oder böse?
fail() liefert true bei Fehler -> !cin.fail()
! ist Verneinung -> true wird false, false wird true
„not false“ ist true ist if, „not true“ ist false ist else
Du kannst auch if cin.fail() -> Fehler und else -> Normal machen…
*/
{
if(countdownStart%2 != false)
/* != „is not“
„is not false“ ist true -> s. Schleifenkopf
{
loop = false;
}
else
{
cout Ganzzahl
int hat Einschränkungen (bestimmte Werte)
s. Zahlenbereich und signed, unsigned
*/
}
}
//Countdown machen
Gewöhne dir an, dass du Benutzereingaben genauer prüfst! Informiere dich näher zu boolescher Algebra.
Wenn der Countdown fertig ist und du möchtest vielleicht noch mehrere Durchläufe machen, dann packst du den ganzen Krempel in noch eine while-Schleife. Mit der Zeit wird so etwas unschön und es lohnt sich Code in Methoden auszulagern:
z.B.:
- Methode für Eingabetext und Eingabe
- Methode für Countdowntext und Ausgabe
-> Schleife A beinhaltet Aufruf zu 1.
-> Schleife B beinhaltet Aufruf zu 2.
=> main beinhaltet A und B
Achtung: Wenn Variablen mit ausgelagert werden, solltest du mit Rückgabewerten arbeiten (Stichworte: Funktion und return), oder nutzt Variablen an einer anderen Stelle (Stichwort: Objektvariable). Dazu lese gründlich zu Sichtbarkeit und Lebensdauer von Variablen.
Grüße Roman
Ich hoffe keine Fehler gemacht zu haben, ansonsten nette Korrektur bitte