Problem mit while Schleife



  • Hey, ich bin erst seit 3 Tagen am C++ programmieren, also nicht wundern wenn meine Frage blöd ist, aber ich habe folgendes Problem:
    Ich habe ein do while Schleife, darin eine switch Funktion und in case 1 nochmal ne while schleife. Wenn ich nun zur case1 wechsel wird die while Schleife ausgeführt, wenn ich aber wieder zurückspring und wieder case1 ausführen will klappts nicht. Hat jemand vllt ne Idee woran das liegen könnte?
    Wäre super wenn mir jemand weitehelfen könnte.

    Gruß CrowdWiggel

    Hier mein Code:

    #include <iostream>
    #include <string>
    #include <cmath>
    #include <windows.h>

    using namespace std;

    int main ()
    {
    char Eingabe;
    do
    {

    cout <<"Programm von CrowdWiggel"<<endl;
    cout <<"\n"<<endl;
    cout<<"----Menue----"<<endl;
    cout<<"(Q)uadratzahlen Berechnung"<<endl;
    cout<<"(W)urzel Berechnung"<<endl;
    cout<<"(T)emperaturberechnung Farenheit - Grad Celsius"<<endl;
    cout<<"(G)ame"<<endl;
    cout<<"(B)eenden"<<endl;

    cout<<"\nWelches Programm wollen sie ausführen?: ";
    cin>>Eingabe;
    switch (Eingabe)
    {
    case('Q'):
    case('q'):
    system("cls");
    int zahl;
    double quadr;
    while (zahl!= 0 )
    {
    cout<<"\nProgramm zur Quadratzahlen Berechnung!\n"<<endl;
    cout<<"Bitte geben sie die Zahl ein die Quadriert werden soll, oder <0> zum beenden: ";
    cout<<"\n"<<endl;
    cin>>zahl;getchar();
    quadr=zahl*zahl;
    cout<<"\nErgebnis: "<<quadr<<endl;
    getchar();
    system("cls");
    }
    break;

    }
    getchar();
    system("cls");
    }
    while(Eingabe!='B' and Eingabe!='b');

    getchar();
    return 0;
    }



  • Sind Variablendeklarationen in case-Anweisungen nicht verboten? :o

    Naja, der Fehler scheint mir offensichtlich:

    int zahl;
    double quadr;
    while (zahl!= 0 )
    

    zahl ist nicht definiert. Wolltest du da nicht auch eine do-while-Schleife einbauen?



  • Naja die erste Ausführung klappt ja, springt vom Menü in das Programm und führt es auch aus, komme auch wieder zurück ins Menü, aber wenn ich dann noch mal zurück will in case 1 klappts eben nicht.



  • Wie gesagt: zahl ist nicht definiert.
    Du kannst dich nicht darauf verlassen, dass Zahl automatisch 0 ist. Probier einfach mal, es manuell mit 0 zu initialisieren oder eine do-while-Schleife zu nutzen.



  • aber ich hab doch oberhalb der zweiten while schleife ein
    cin, damit müsste doch zahl definiert werden.

    Mit do while krieg ichs auch irgendwie nicht hin. Werd einfach mal weiter rumprobieren. Aber Danke für die Mühe!



  • CrowdWiggel schrieb:

    aber ich hab doch oberhalb der zweiten while schleife ein
    cin, damit müsste doch zahl definiert werden.

    Nein zahl wurde nicht definiert.

    int zahl;
    double quadr;
    while (zahl!= 0 )
    

    Bei der while Bedingung überprüfst du ob die int variable ungleich 0 ist, was jedoch undefiniert ist.

    int zahl = -1; // zahl wird mit dem Wert -1 initialisiert.
    double quadr;
    while (zahl!= 0 )
    

    So würde die Bedingung erfüllt werden und man würde in die Schleife eintreten, oder du machst eine do-while Schleife wie weiter oben in deinem Code. Dabei würde das ganze mindestens einmal ausgeführt werden.

    Gruss,
    arb3r


Anmelden zum Antworten