Frage zu Funktion im Taschenrechner Programm



  • Hallo,

    mein erster Taschenrechner den ich gemacht habe der sah so aus:

    #include <iostream>
    using namespace std;
    int main()
    
    {
    int nummer,zahl1,zahl2,add,zahl3,zahl4,sub,nochmal;
    
    do
    
    {
    system("CLS");
    cout<<"(1) Addieren \n";
    cout<<"(2) Subtrahieren\n";
    cout<<"\n";
    cout<<"Nummer eingeben: ";
    cin>>nummer;
    
    if (nummer==1)
    {
    cout<<"Geben sie die erste Zahl ein: \n";
    cin>>zahl1;
    cout<<"Geben sie die zweite Zahl ein: \n";
    cin>>zahl2;
    add = zahl1+zahl2;
    cout<<"Das Ergebniss lautet"<<add<<"\n";
    cout<<"Wollen sie noch etwas berechne ? 1=Ja, 2=Nein\n";
    cin>>nochmal;
    }
    
    if (nummer==2)
    {
    cout<<"Geben sie die erste Zahl ein: \n";
    cin>>zahl3;
    cout<<"Geben sie die zweite Zahl ein: \n";
    cin>>zahl4;
    sub = zahl3-zahl4;
    cout<<"Das Ergebniss lautet"<<sub<<"\n";
    cout<<"Wollen sie noch etwas berechne ? 1=Ja, 2=Nein\n";
    cin>>nochmal;
    }
    
    }
    while(nochmal==1);
    
    system("PAUSE");
    }
    

    Jetzt möchte ich das aber mal mit den Funktionen ausprobieren, muss man dann da auch die if abfragen in eine extra funktion packen ?

    Hier der Source Code:

    #include <iostream>
    using namespace std;
    
    void ausgabe(int menu);
    
    int main ()
    
    {
    int menu;
    ausgabe(menu);
    system("PAUSE");
    }
    
    void ausgabe(int menu)
    {
    cout<<"~~Taschenrechner~~\n";
    cout<<"\n";
    cout<<"(1) Addieren\n";
    cout<<"(2) Subtrahieren\n";
    cout<<"\n";
    cout<<"Nummer Eingeben: ";
    cin>>menu;
    }
    


  • Das was in deinen if-Abfragen steht solltest du jeweils in Funktionen packen. Also eine Funktion für Zweig 1 und eine weitere für Zweig 2.



  • ok thx



  • Wenn du das Funktional lösen willst, dann so:

    int menu()
        {
             cout << "Menu ausgeben..." << endl;
             // ...
             return auswahl;
        }
    

    Wenn du das Prozedural lösen möchtest:

    void menu(int& menuauswahl)
        {
            cout << "Menu ausgeben..." << endl;
            // ...
            menuauswahl = auswahl;
        }
    

    Wobei ich die funktionale Variante vorzöge, da diese sich angenehmer verwenden lässt, zum Beispiel in switch-case-blöcken:

    switch( menu() ) {
        case 1:
            addieren();
            break;
        case 2:
            subtrahieren();
            break;
        // ...
    }
    

    Und um mit den Worten des Meister Yoda zu schreiben: Vergessen musst, was füher du gelernt (Batch). 😉

    Grüße... Heiko



  • Dann solltest du der Funktion menu auch einen Wert zurückgeben lassen, sonst kannst du sie nicht in switch verwenden. Die while-schleife muß ja auch noch bedient werden.

    int menu()
    {
        cout << "Menu ausgeben..." << endl;
        // ...
        return auswahl;
    }
    

Anmelden zum Antworten