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

Tobsi_

Frischling

  • »Tobsi_« ist der Autor dieses Themas

Beiträge: 83

Wohnort: Sachsen Anhalt

Beruf: Schülerin

  • Private Nachricht senden

1

31.08.2012, 11:21

Nach While - Schleife IMMER Programmende? (Aufgabe 3.10) - gelöst!

Ich wollte einen Countdown programmieren, der Rückwärts läuft. Man soll den Startwert eingeben ,der aktuelle Stand des Countdown soll ausgegeben werden und nach der Hälfte der Zeit soll noch ein Hinweis kommen. Da es bei geraden Zahlen keine Hälfte der Zeit gibt, wollte ich mit einer while - Schleife solange nach einem Startwert fragen, bis der "Programmnutzer" eine ungerade Zahl eingibt. Aber wenn jetzt eine ungerade Zahl eingegeben wird, beendet sich das Programm und der ganze else -Block wird nicht mehr ausgeführt. Ist das nach einer while - Schleife immer so?

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
...
// Variable
    unsigned int Start;
    // Variable Wert afragen
    cout << "Gib den Startwert ein: ";
    cin >> Start;

    // Gerader Startwert? - solange bis ungerader startwert ist
    if (Start%2 ==0)
    {
        while (Start%2 == 0)
        {
            cout << "Bitte einen neuen Startwert eingeben: ";
            cin >> Start;
        }
    }

    //ungerader Startwert - Countdown
    else
    {
        for ( int i = Start; i>=0; i--)
        {
            cout << "Countdownstand: " << i << endl;
            // Hinweis nach Halbzeit
            if ( i== Start/2 +1)
            cout << "Halbzeit:" << endl;
        }
    }
...


ich weiß dass das in der Aufgabe eigentlich noch gar nicht gefordert war, aber ich wollts mal ausprobieren.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Tobsi_« (31.08.2012, 11:47) aus folgendem Grund: Problem gelöst!


2

31.08.2012, 11:24

Schau dir am besten im Debug nochmal genau an, wie der Code durchlaufen wird.
Du gehst in die If Abfrage bei einer geraden Zahl und fragst dann solange ab bis eine ungerade Zahl kommt. Dann kann er aber gar nicht in die Else Abfrage reinspringen, da der Compiler aufgrund der Anfangsabfrage in den If Block gesprungen ist. Verstehst du, wie ich das meine?

Tobsi_

Frischling

  • »Tobsi_« ist der Autor dieses Themas

Beiträge: 83

Wohnort: Sachsen Anhalt

Beruf: Schülerin

  • Private Nachricht senden

3

31.08.2012, 11:32

Ah!! Ich glaub ich habs! Das heißt also es wird immer nur entweder der If - Block oder der Else- Block ausgeführt, oder? is eigentlich auch logisch...
Kann man das irgendwie anders lösen?
Ich habs schon! Danke für die Antwort, manchmal komm ich auf die einfachsten Dinge nicht :dash:

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Tobsi_« (31.08.2012, 11:46)


Werbeanzeige