Problem mit DO WHILE



  • Hallo und guten Tag

    Ich bin C++ Anfänger und habe ein kleines Problem.

    Das Problem ist das wenn ich das Programm mit dem Menü-Punkt 7 verlassen will
    springt es in der main-funktion direkt auf "return 0;" und macht nicht bei "else" weiter.

    Woran kann das liegen?

    Hier der Code

    #include <iostream>
    #include <windows.h>
    #include <limits>
    
    using namespace std;
    
    void ausw(void);
    bool land(int);
    void test(void);
    int chek(void);
    
    int main(void)
    {
    
        int mai1;
        bool labo;
    
        if(labo==false)
        {
            do
            {
                ausw();
    
                mai1 = chek();
    
                labo = land(mai1);
            }
            while(labo==false);
        }
    
        else
        {
            cout << "Das Programm wird beendet!!!\n";
            Sleep(1000);
        }
    
        return 0;
    }
    
    void ausw(void)
    {
        cout << "-1- Europa\n";
        cout << "-2- Asien\n";
        cout << "-3- Afrika\n";
        cout << "-4- test()-Funktion\n";
        cout << "-5- while-Schleifendurchlauf\n";
        cout << "-6- for-Schleifendurchlauf\n";
        cout << "-7- Beenden\n\n";
    }
    
    bool land(int lan1)
    {
        int whi1 = 0;
    
        switch(lan1)
        {
            case 1:
            cout << "\nEuropa\n\n";
            Sleep(2000);
            break;
    
            case 2:
            cout << "\nAsien\n\n";
            Sleep(2000);
            break;
    
            case 3:
            cout << "\nAfrika\n\n";
            Sleep(2000);
            break;
    
            case 4:
            test();
            Sleep(2000);
            break;
    
            case 5:
            while(whi1 <= 1000)
            {
                cout << whi1 << ". Schleifendurchlauf\n";
                whi1++;
            }
            Sleep(2000);
            cout << endl;
            break;
    
            case 6:
            for(int fo1=1; fo1<=1000; fo1++)
            {
                cout << fo1 << ". Schleifendurchlauf\n";
            }
            Sleep(2000);
            cout << endl;
            break;
    
            case 7:
            return true;
    
            default:
            break;
        }
    }
    
    void test(void)
    {
        cout << "\nDas ist eine Test Funktion!!!\n\n";
    }
    
    int chek(void)
    {
        int che1;
    
        do
        {
            cout << "\nEingabe: ";
            cin >> che1;
    
            if(che1)
            {
                return che1;
            }
    
            else if(!cin.bad() && !cin.eof())
            {
                cerr << "\nDu hast was falsches eingegeben!\n";
                Sleep(1000);
                cerr << "\nVersuch es nochmal!\n";
                Sleep(1000);
    
                cin.clear();
                cin.ignore(numeric_limits<streamsize>::max(), '\n');
            }
    
        }
    
        while(cin);
    }
    


  • und macht nicht bei "else" weiter

    Es wird entweder der if-Zweig ausgefuehrt oder der else-Zweig. Bist du schon im if-Zweig, wird der else-Zweig also nicht mehr ausgefuehrt.



  • Du verstehst leider die Funktionsweise der if-Schleife falsch. Wenn das Programm die if-Anweising erreicht entscheidet es genau in diesem Moment welche von den beiden Blocks ( if und else ) es ausführen wird. Nachträgliches Ändern der gecheckten Variable bringt also nix.



  • Travor schrieb:

    if-Schleife

    Stirb. 👎



  • Travor schrieb:

    Du verstehst leider die Funktionsweise der if-Schleife falsch.

    Da ist er wohl nicht der einzige. http://www.if-schleife.de/



  • Bin schon seid ner Stunde am grübeln und komm nich auf sowas einfaches.

    Gott bin ich vercheckt.

    Vielen Dank euch Beiden



  • cooky451 schrieb:

    Travor schrieb:

    Du verstehst leider die Funktionsweise der if-Schleife falsch.

    Da ist er wohl nicht der einzige. http://www.if-schleife.de/

    upps 😮 😃 😃 😃 Das ist echt peinlich:).. Vielleicht sollte ich etwas langsamer schreiben.. Dann kommt der Hirn auch nach..



  • Travor schrieb:

    cooky451 schrieb:

    Travor schrieb:

    Du verstehst leider die Funktionsweise der if-Schleife falsch.

    Da ist er wohl nicht der einzige. http://www.if-schleife.de/

    upps 😮 😃 😃 😃 Das ist echt peinlich:).. Vielleicht sollte ich etwas langsamer schreiben.. Dann kommt der Hirn auch nach..

    Der Hirn? Vielleicht solltest du noch langsamer schreiben...



  • Ohne mir jetzt das Problem angesehen zu haben: Du lernst nicht zufällig mit "C++ von A bis Z"?

    Wenn ja dann schau dir das mal an: http://www.c-plusplus.net/forum/272350
    Und direkt danach als Alternative das hier http://www.amazon.de/Programmierer-lernen-Professionell-anwenden-L%C3%B6sungen/dp/3446416447 oder gleich für eine Liste das hier http://www.c-plusplus.net/forum/251551

    Wenn nicht, dann ignorier das hier einfach.



  • Jemand zahlt für Webspace um sone Drecks website zu hosten? ;O


Anmelden zum Antworten