Taschenrechner Problem



  • Nunja, ich habe einen Taschenrechner erstellt, der auch funktioniert, nur gibt es da ein Problem. Ich habe gehört, man kann mehrere Funktionen auswählen, indem man schreibt: z.B:
    cout << "1. Addition" << endl;
    cout << "2. Subtraktion" << endl;
    cout << "3. Multiplikation" << endl;
    cout << "4. Division" << endl;

    So, wenn ich aber nun auf die .exe Datei klicke und den Taschenrechner starte
    und eine Zahl, wie z.B. 3 eingebe, kommt aber trotzdem die Addition und danach folgen die anderen Rechenoptionen. Mit `goto´ hab ich schon was probiert, ging nicht... Ich hab hier mal das Script kopiert. Ich hoffe, ihr könnt mir helfen.
    Thx im Voraus. 🙂

    \1:
    ______________________________

    #include<iostream>
    #include<cstdlib>
    using namespace std;
    
    int main()
    {
        int rechenoption;
        int zahl1;
        int zahl2;
    
        cout<<"Taschenrechner"<<endl;
        cout<<"Bitte waehlen sie die gewuenschte Rechenoption."<<endl;
        cout << "1. Addition" << endl;
        cout << "2. Subtraktion" << endl;
        cout << "3. Multiplikation" << endl;      //hier liegt das Problem!!!!
        cout << "4. Division" << endl;
        cin>>rechenoption;
    
        if(rechenoption == 1);
        {
             cout<<"Wir fuehren eine Addition durch."<<endl;
             cout<<"Bitte geben sie 2 Zahlen ein, die addiert werden sollen."<<endl; 
             cout<<"Erste Zahl: "; 
             cin>>zahl1;
             cout<<"Zweite Zahl: ";
             cin>>zahl2; 
             cout<<zahl1<<" + "<<zahl2<<" = "<<(zahl1+zahl2)<<endl;              
        }
        if(rechenoption == 2);
        {
             cout<<"Wir fuehren eine Subtraktion durch."<<endl;
             cout<<"Bitte geben sie 2 Zahlen ein, die subtrahiert werden sollen."<<endl; 
             cout<<"Erste Zahl: "; 
             cin>>zahl1;
             cout<<"Zweite Zahl: ";
             cin>>zahl2; 
             cout<<zahl1<<" - "<<zahl2<<" = "<<(zahl1-zahl2)<<endl;               
        }
        if(rechenoption == 3);
        {
             cout<<"Wir fuehren eine Multiplikation durch."<<endl;
             cout<<"Bitte geben sie 2 Zahlen ein, die multipliziert werden sollen."<<endl; 
             cout<<"Erste Zahl: "; 
             cin>>zahl1;
             cout<<"Zweite Zahl: ";
             cin>>zahl2; 
             cout<<zahl1<<" * "<<zahl2<<" = "<<(zahl1*zahl2)<<endl;              
        }
        if(rechenoption == 4);
        {
             cout<<"Wir fuehren eine Division durch."<<endl;
             cout<<"Bitte geben sie 2 Zahlen ein, die dividiert werden sollen."<<endl; 
             cout<<"Erste Zahl: "; 
             cin>>zahl1;
             cout<<"Zweite Zahl: ";
             cin>>zahl2; 
             cout<<zahl1<<" durch "<<zahl2<<" = "<<(zahl1/zahl2)<<endl;               
        }
        system("PAUSE");
        return 0;
    }
    


  • Die Semikolons im if Stmt hast Du falsch gesetzt. Die gehören da nicht hin.

    Mach aus:
    if(rechenoption == 1);
    {
    ...
    Diese hier
    if(rechenoption == 1) {
    ...


  • Mod

    Keine Semikolons nach den if-Abfragen! Das bedeutet nämlich, dass gar nichts gemacht wird, wenn die Bedingung erfüllt ist.



  • Hinzu kommt, dass die Blöcke ({ ... }) "beliebig" im Quelltext stehen dürfen (und einen eigenen Scope bilden):

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int wert = 1;
        {
            int wert = 3;
            cout << "wert in {} ist " << wert << endl;
        }
        cout << "wert ist " << wert << endl;
    }
    

    Das hat in deinem Programm zur Folge, dass nach der Bedingung (if) nichts ausgeführt wird und im "unbedingten"/normalen Programmverlauf die Addition. Das Programm durchläuft so alle Rechenoperationen.

    Grüße ... Heiko



  • Die Semikolons habe ich gelöscht, aber noch 2 Sachen. Erstens verstehe ich den Einwand von bwbg nicht und zweitens klappts immer noch nicht! 😞
    Was tun?????



  • HABS KAPIERT !!!!!!!!!!!!!!

    VIELEN VIELEN DANK LEUTE! Oder aud C++:

    cout<<"Danke, Leute!"<<endl;

    xD Bye
    Gruß Flo 🕶



    1. bitte das nächstemal die cpp-Tags benutzen, hab sie jetzt für dich eingefügt.
    2. C++ ist eine Programmiersprache, keine Scriptsprache 😉


  • pumuckl schrieb:

    C++ ist eine Programmiersprache, keine Scriptsprache 😉

    Das schmerzt schon, wenn C++ als Skriptsprache bezeichnet wird 😞


Log in to reply