C++ Programm ab bestimmter Zeile neu starten

Hi erstmal! :smile:

So, das hier ist mein Programm, eigentlich ganz simpel:

**#include
using namespace std;

int main ()
{
int CountdownStart;
cout > CountdownStart;
cout =0; i–)
{
cout

So, jetzt frage ich mich, wie ich nochmal von vorne anfangen kann, wenn die Eingabe falsch war. Also dass das Programmm zur Zeile 7 springt.

Liebe Grüße vom blutigen Anfänger :smile:**

Hi,
mit einer Schleife.
Lg Knerd

Aber wie? Ich kapier das garnet ;(

Kann mir da jemand vielleicht mal helfen?
Bis jetzt kann ich nur die for Schleife.

Hi,
Ich dacht du bist mit allen Schleifen vertraut.
Also hier dein Code überarbeitet:

#include 
using namespace std;

int main ()
{
 int CountdownStart;
 do{
 cout \> CountdownStart;
 cout =0; i--)
 {
 cout 
Konnte ihn nicht testen müsste aber gehen.
Und google mal nach Schleife C++.
Hier noch ein kleiner Tipp:
http://www.willemer.de/informatik/cpp/index.htm
Lg Knerd
1 Like

Knerd: dein Code geht leider nicht, aber danke für den Link mit dem Buch (das man ja eigentlich sonst kaufen müsste ^^).
Werde mir das mal durchlesen
An den netten Menschen: Verstehe das jetzt noch nicht so.

LG

Moin moin,
ne kann er auch nicht :smile: aber das zu sehen das kommt noch , bzw
solltest du lernen was der debugger dazu sacht.

Dein Beispiel hatte einen IF ELSE ZWEIG.

Leider hat er vergessen das er ja schon solange mit WHILE wiederholt das es kein else braucht.

also ist

int main ()
{
int CountdownStart;
do{
cout > CountdownStart;
cout =0; i–)
{
cout

das DO wird solange ausgeführt wie keine gerade zahl da ist, ist eine ungerade zahl eingegeben worden gibts eine fehlermeldung .

wenn also nach eingabe die zahl gerade ist wiederholt while nicht mehr und somit kann man sie ausgeben. Else ist hier nie nicht nötig.

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 :wink:
{
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.:

  1. Methode für Eingabetext und Eingabe
  2. 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 :wink:

Danke an alle Antworter :smile:
ich glaube ich habe es jetzt kapiert. Ich muss eine do {} while () Schleife um die Zeilen, die dafür zuständig um die Werte abzufragen, machen.

Hi Thomas,
danke für die Korrektur konnte den Code wie gesagt leider nicht testen:wink:
Lg Knerd