Anfänger Problem



  • Ich bin noch ein Anfänger und hab mal versucht für den Informatik Unterricht einen Taschenrechner programmieren, aber er lässt sich nicht ausführen (Es kommt nur "weiter mit beliebiger Taste"). Sind irgendwelche Fehler im Code?
    #include <iostream>
    #include <stdlib.h>
    using namespace std;

    int main()
    { int zahl1=0, zahl2=0, ergebnis=0;
    char operation = ' ';
    char weiter = ' ';

    while(weiter == 'j')
    { cout << "Tippe zwei Zahlen ein und bestätige mit Enter!!" << endl;
    cin >> zahl1;
    cin >> zahl2;
    cout << "Jetzt waehle deine Rechenoperation:" << endl;
    cin >> operation;

    if (operation == '+') {ergebnis = zahl1 + zahl2;};
    if (operation == '-') {ergebnis = zahl1 - zahl2;};
    if (operation == '*') {ergebnis = zahl1 * zahl2;};
    if (operation == '/') {ergebnis = zahl1 / zahl2;};

    cout << "Und das Ergebnis ist: " << ergebnis << endl;
    cout << "nochmal rechnen? Wenn Ja, tippe ein 'j' ein, wenn nein, ein beliebige andere Taste" << endl;
    cin >> weiter;
    }
    system("PAUSE");
    }



  • weiter ist nicht auf 'j' initialisiert.

    aus...

    char weiter = '';
    

    wird...

    char weiter = 'j';
    

    sonst kommt er nicht in die Schleife rein. Und system(...) sollte man nicht verwenden....

    EDIT: Achso, und Codetags gibts auch

    [ Dieser Beitrag wurde am 26.03.2003 um 21:53 Uhr von MaSTaH editiert. ]



  • Ich hätte das etwas anders gelöst, aber probier es mal so... 🙄

    #include <iostream>
    using namespace std;
    
    int main()
    { 
        int zahl1=0, zahl2=0, ergebnis=0;
        char operation, weiter = ' ';   
    
        do
        { 
            cout << "\nTippe eine Rechnung mit zwei Zahlen ein und bestätige mit Enter!!" << endl;
            cin >> zahl1;
            cin >> operation;
            cin >> zahl2; 
    
            if (operation == '+') {ergebnis = zahl1 + zahl2;};
            if (operation == '-') {ergebnis = zahl1 - zahl2;}; 
            if (operation == '*') {ergebnis = zahl1 * zahl2;};
            if (operation == '/') {ergebnis = zahl1 / zahl2;};
    
            cout << "Und das Ergebnis ist: " << ergebnis << endl;
            cout << "nochmal rechnen? Wenn Ja, tippe ein 'j' ein, wenn nein, ein beliebige andere Taste." << endl;
            cin >> weiter;
            cout << endl;
        } while(weiter == 'j');
        cin.get();
        return 0;
    }
    

    mfg tHe pHreak



  • Ja, das nennt man postchecked 😃 . Hatte aber keine Lust das umzuschreiben *faul*

    [ Dieser Beitrag wurde am 26.03.2003 um 22:00 Uhr von MaSTaH editiert. ]



  • Danke 🙂 , was sollte man den anstatt system() benutzen?



  • Schau mal in die Faq. -> Automatisches Schließen verhindern

    Da müsste es stehen. 🙂

    mfg tHe pHreak



  • Wie in den Beiträgen davor schon gesagt hast, wird die Schleife nie aktiviert. Eine Lösung wäre es, deine char - Variable 'weiter' einfach als bool - Variable zu implementieren. bool kennt nur zwei Werte true oder false. Setze weiter gleich am Anfang afu true.
    bool weiter = true
    Nun holst du dir einfach die char - Variable antwort hinzu. Und wenn:
    if(antwort == 'j')
    {
    weiter = true;
    }
    else
    {
    weiter = false;
    }

    Das wäre meine Lösung für dein Problem, um deinen Code beizubehalten.
    Statt System() kannst du mal getchar() probieren.
    Die Funktion brauch keine eigene Header- Datei.



  • amichian schrieb:

    if(antwort == 'j')
    {
    weiter = true;
    }
    else
    {
    weiter = false;
    }

    Diese Zeilen kann man kürzer auch so schreiben:

    weiter = antwort == 'j';
    


  • WTF?! Der Thread ist so alt, der stinkt schon. Über 9 Jahre. Mein ihr wirklich, der OP knabbert immer noch an dem Problem?


Anmelden zum Antworten