Anfänger Frage...



  • Vielen Dank!
    glg.



  • Hi!
    Sorry das ich noch einmal nerve...
    Ich habe jetzt den Code verändert und das mit 'N' und 'B' klappt.

    #include <iostream>
    using namespace std;
    
    int main()
    {
        float Brutto, Netto, Mwstbetrag, a;
        char i;
        cout << "Bitte geben sie N oder B ein!" << endl;
        cin >> i;
        if(i== 'B')
        {
              cout << "Bitte geben Sie den Bruttobetrag ein!" << endl;
              cin >> Brutto;
              Netto= Brutto*20 /120;
              Mwstbetrag= Brutto-Netto;
              cout << "Nettobetrag: " << Netto << endl;
              cout << "Mwstbetrag: " << Mwstbetrag << endl;
              return 0;
        }
        if(i== 'N')
        {
              cout << "Bitte geben Sie den Nettobetrag ein!" << endl;
              cin >> Netto;
              Brutto= Netto*20 /100;
              Mwstbetrag=Brutto-Netto;
              cout << "Bruttobetrag: " << Brutto << endl;
              cout << "Mwstbetrag: " << Mwstbetrag << endl;
              return 0;
        }
        else
        {
            cout << "Ihre Eingabe war falsch! Bitte geben sie B oder N ein!" << endl;
            return 0;
        }
    }
    

    Aber auch wenn ich den Code so verändere wie hier beschrieben http://c-plusplus.net/forum/viewtopic-var-t-is-111042.html
    Dann schließt sich das Fenster trozdem.

    Und wie kann man eine Endlosschleife erzeugen?
    Damit man nach einem Durchgang wieder die Anweisung "Bitte geben sie N oder B ein!" kommt.

    Ich habe schon einige Threads durchgelesen, aber ich verstehe das irgendwie nicht...

    Danke im Voraus 🙂



  • "Wir fügen am Ende des Programms noch eine weitere Anweisung ein, die auf einen Tastendruck des Benutzers wartet."

    Das sehe ich in deinem Quellcode gerade nicht.



  • Ja ich weiß... ich habe es wieder gelöscht da es nicht funktioniert hat...
    (Es hat sich wieder geschlossen)



  • #include <iostream>
    using namespace std;
    
    int main()
    {
        float Brutto, Netto, Mwstbetrag, a;
        char i;
        cout << "Bitte geben sie N oder B ein!" << endl;
        cin >> i;
    
        /*
            Da 'i' ja entweder 'B' oder 'N' sein kann, solltest du else-if verwenden:
                Wenn du z.B. 'B' eingibst wird die if-Anweisung nach dem '{}' abgeborchen,
                und es wird danach weiter gemacht.
    
            Wenn du es ohne else-if machst (wie im Moment) wird auf beides ('B' und 'N') geprüft,
            was unnötig ist, da ja immer nur 1 in Frage kommt.
        */
        if(i == 'B')
        {
              cout << "Bitte geben Sie den Bruttobetrag ein!" << endl;
              cin >> Brutto;
              Netto= Brutto*20 /120;
              Mwstbetrag= Brutto-Netto;
              cout << "Nettobetrag: " << Netto << endl;
              cout << "Mwstbetrag: " << Mwstbetrag << endl;
        }
        else if(i == 'N')
        {
              cout << "Bitte geben Sie den Nettobetrag ein!" << endl;
              cin >> Netto;
              Brutto= Netto*20 /100;
              Mwstbetrag=Brutto-Netto;
              cout << "Bruttobetrag: " << Brutto << endl;
              cout << "Mwstbetrag: " << Mwstbetrag << endl;
        }
        else
        {
            cout << "Ihre Eingabe war falsch! Bitte geben sie B oder N ein!" << endl;
        }
    
        /*
            Eine einfache Lösung um auf einen Tastendruck zu warten.
            Kann zu Problemen führen, wenn im Puffer noch ein Zeichen steckt.
        */
        getchar();
    
        /*
            Die return-Aweisung ist nur 1x in einer Funktion zu schreiben,
            wenn der Ausdruck hinter return immer der gleiche ist.
        */
        return 0;
    }
    
    /*
            Wenn noch Zeichen im Puffer sind kannst du sie z.B. so verwerfen.
        */
        cin.sync(); // Die noch vorhandenen Zeichen im Puffer verwerfen.
        cin.get(); // Wartet auf Tastendruck.
    
        /*
            In dem oben geposteten Link findest du auch noch andere Möglichkeiten.
            Es ist nicht gesagt, dass alle Möglichkeiten funktionieren :P
        */
    


  • Ich versteh das nicht... es schließt sich noch immer...und wiederholt nicht.
    Könnte es vielleicht am Compiler liegen? Ich benutze Dev C++.
    Aber danke für die anschauliche Erklärung!



  • poste mal den kompetten code, der net geht.



  • Ok es geht jetzt das, das Fenster sich nicht gleich schließt.

    #include <iostream>
    using namespace std;
    
    int main()
    {
        float Brutto, Netto, Mwstbetrag, a;
        char i;
        cout << "Bitte geben sie N oder B ein!" << endl;
        cin >> i;
    
        if(i == 'B')
        {
              cout << "Bitte geben Sie den Bruttobetrag ein!" << endl;
              cin >> Brutto;
              Netto= Brutto*20 /120;
              Mwstbetrag= Brutto-Netto;
              cout << "Nettobetrag: " << Netto << endl;
              cout << "Mwstbetrag: " << Mwstbetrag << endl;
        }
        else if(i == 'N')
        {
              cout << "Bitte geben Sie den Nettobetrag ein!" << endl;
              cin >> Netto;
              Brutto= Netto*20 /100;
              Mwstbetrag=Brutto-Netto;
              cout << "Bruttobetrag: " << Brutto << endl;
              cout << "Mwstbetrag: " << Mwstbetrag << endl;
        }
        else
        {
            cout << "Ihre Eingabe war falsch! Bitte geben sie B oder N ein!" << endl;
        }
    
        getchar();
        cin.sync();
        cin.get(); 
    
        return 0;
    }
    

    Und wie kann man es machen das es in einer Endlosschleife läuft?



  • Von einer Endlosschleife ist natürlich abzuraten, weil, wie der Name schon sagt, sie endlos ist... dann musst du das Programm ja abkacken lassen...

    Für Wiederholungen benutzt man Schleife.
    Es gibt 2 Arten von Schleifen:
    - Kopfgesteuerte: Es wird vor dem Schleifendurchgang etwas geprüft (for,while).
    - Fußgesteuerte: Es wird nach dem Schleifendurchgang etwas geprüft (do-while).

    Die fußgesteuerte Schleife läuft demnach immer min.1x durch.

    #include <iostream>
    using namespace std;
    
    int main()
    {
        float Brutto, Netto, Mwstbetrag, a;
        char i;
    
        do
        { 
            cout << "Bitte geben sie N, B oder E ein!" << endl;
            cin >> i;
    
            if(i == 'B')
            {
                cout << "Bitte geben Sie den Bruttobetrag ein!" << endl;
                cin >> Brutto;
                Netto= Brutto*20 /120;
                Mwstbetrag= Brutto-Netto;
                cout << "Nettobetrag: " << Netto << endl;
                cout << "Mwstbetrag: " << Mwstbetrag << endl;
            }
            else if(i == 'N')
            {
                cout << "Bitte geben Sie den Nettobetrag ein!" << endl;
                cin >> Netto;
                Brutto= Netto*20 /100;
                Mwstbetrag=Brutto-Netto;
                cout << "Bruttobetrag: " << Brutto << endl;
                cout << "Mwstbetrag: " << Mwstbetrag << endl;
            }
            else if(i == 'E')
            {
                cout << "Exit";
            }
            else
            {
                cout << "Ihre Eingabe war falsch! Bitte geben sie B oder N ein!" << endl;
            }
        }
        while(i != 'E');
    
        cin.sync();
        cin.get();
    
        return 0;
    }
    


  • Danke!
    🙂

    Jetzt verstehe ich auch wie das geht 🙂
    Nochmals danke!


Anmelden zum Antworten