Funktion All() fehlerhaft



  • Hallo, ich bin blutjunger Anfänger und gerade Funktionen angelangt.
    Ich muss einen Taschenrechner für die Konsole schreiben...hab ich auch gemacht! Jetzt soll ich eine weitere Funktion miteinbeziehen, die, die Ergebnisse aller Grundrechenarten auf einmal auf dem Bildschirm ausgibt.

    Auswahl Menu>>>1Zahl eingeben>>>2Zahl eingeben>>>Ausgabe;
    Mein Code:

    #include <iostream.h>
    
    //======================================================================
    //function addition
    float Add(float fAdd_1, float fAdd_2)
            {
            return (fAdd_1+fAdd_2);
            }
    //======================================================================
    //function division
    float Div(float fDiv_1, float fDiv_2)
            {
            return (fDiv_1/fDiv_2);
            }
    //======================================================================
    //function subtraktion
    float Sub(float fSub_1, float fSub_2)
            {
            return (fSub_1-fSub_2);
            }
    //======================================================================
    //function multiplikation
    float Mul(float fMul_1, float fMul_2)
            {
            return (fMul_1*fMul_2);
            }
    //======================================================================
    //+++++DIESE FUNKTION IST FEHLERHAFT+++++
    //function all_in_one
    float All()
            {
    
            float fAll_1, fAll_2;
    
            cout <<"Geben Sie jetzt 2 Zahlen untereinander ein"<<endl;
            cout <<"Verwenden Sie den Punkt anstelle eines Kommas!"<<endl;
    
            cin >>fAll_1;
            cin >>fAll_2;
    
            float fAdd = fAll_1+fAll_2;
            float fDiv = fAll_1/fAll_2;
            float fSub = fAll_1-fAll_2;
            float fMul = fAll_1*fAll_2;
    
            cout <<fAdd<<endl;
            cout <<fDiv<<endl;
            cout <<fSub<<endl;
            cout <<fMul<<endl;
            }
    //======================================================================
    //function main
    void main()
            {
            float fEingabe_1, fEingabe_2;
            int iWert;
    
            cout <<"Welche Rechnung moechten sie durchfuehren?"<<endl;
            cout <<"1 addition"<<endl<<"2 division"<<endl<<"3 subtraktion"<<endl;
            cout <<"4 multiplikation"<<endl<<"5 alle Berechnungen durchfuehren"<<endl;
    
            if(iWert==5)
                    {
                    All();
                    }
    
            while(iWert)
                    {
                    cin >> iWert;
                    if(iWert>5)
                            {
                            cout <<"Fehler, sie muessen zwischen 1-5 waehlen!"<<endl;
                            cout <<"Waehlen sie neu:"<<endl;
                            continue;
                            }
                    else break;
                    }
    
            cout <<"Geben Sie jetzt 2 Zahlen untereinander ein"<<endl;
            cout <<"Verwenden Sie den Punkt anstelle eines Kommas!"<<endl;
            cin >>fEingabe_1;
            cin >>fEingabe_2;
    
            switch (iWert)
                    {
                    case 1:
                            cout <<Add(fEingabe_1, fEingabe_2);
                            break;
                    case 2:
                            cout <<Div(fEingabe_1, fEingabe_2);
                            break;
                    case 3:
                            cout <<Sub(fEingabe_1, fEingabe_2);
                            break;
                    case 4:
                            cout <<Mul(fEingabe_1, fEingabe_2);
                            break;
                    default:
                            cout <<"Fehler!";
                    }
    
                    char p[50];
                    cin.getline(p,50);
                    cin.getline(p,50);
            }
    //======================================================================
    

    Sorry für den laaaaangen post.
    Ich hab mich da extrem verstrickt;)
    Bin für jeden Rat dankbar.
    dieter



  • Hi,

    zur Funktion All(), du hast den Rückgabewert float definiert gibst aber in der ganzen Funktion nie etwas zurück.

    Sonst noch ein paar kleine dinge die mir aufgefallen sind:

    int main()
    // nicht void!!!
    
    float fAdd = fAll_1+fAll_2;
    float fDiv = fAll_1/fAll_2;
    float fSub = fAll_1-fAll_2;
    float fMul = fAll_1*fAll_2;
    cout <<fAdd<<endl;
    cout <<fDiv<<endl;
    cout <<fSub<<endl;
    cout <<fMul<<endl;
    

    Warum gehst du den Umweg über die Variablen und schreibst die Rechenoperationen nicht direkt in die Ausgabe:

    cout << fAll_1 + fAll_2 << endl;
    // ...
    

    Die Funktionen Add, Div, Mul und Sub sind eigentlich ziemlich überflüssig, vergrößern das Programm und durch die ganzen Funktionsaufrufe wird das Programm auch noch langsamer, jaaaaaaa ich weis das man diesen unterschied gar nicht bemerken würde aber es viel mir halt noch auf. 🙂
    Gruß Wolle



  • Danke erstma für die schnelle hilfe;)
    Ich musste wegen der Aufgabenstellung diese einzelnen Funktionen verwenden.
    hm nun ja die function All()...ich hatte sie zuerst mit void deklariert also ohne einen rückgabe wert aber dann funtzt das ganze auch nicht. das ist der springende "." Wie würdest du diese Funktion zum laufen bringen?
    Und ist es nötig für die Funktionen float zu verwenden?
    btw. die Variablen in function All() sind sinnlos ja, leuchtet ein;) werd ich gleich mal killen...



  • Hmm, also ich sehe keinen Grund wieso die Funktion nicht mit void laufen sollte.

    void Add()
    {
        // ...
    }
    

    Probier es doch noch einmal so, sollte es nicht laufen postest du am besten mal die Fehlermeldungen.

    Was mir auch noch aufgefallen ist:

    #include <iostream>  // iostream.h ist alter Standard und es wird empfohlen
                         // diesen nicht mehr zu verwenden.
    using namespace std; // wirst du warscheinlich dann auch noch benötigen.
    


  • Vielen Dank, fehlermeldungen gibts keine mehr! Muss nur noch ein bischen was in main fixen.
    In diesem Forum bleib ich;)

    --gefixt-- hier noch der geänderte code:

    //======================================================================
    //function all_in_one
    void All(float fAll_1, float fAll_2)
            {
            cout <<fAll_1+fAll_2<<endl;
            cout <<fAll_1/fAll_2<<endl;
            cout <<fAll_1-fAll_2<<endl;
            cout <<fAll_1*fAll_2<<endl;
            }
    //======================================================================
    //function main
    int main()
            {
            float fEingabe_1, fEingabe_2;
            int iWert;
    
            cout <<"Welche Rechnung moechten sie durchfuehren?"<<endl;
            cout <<"1 addition"<<endl<<"2 division"<<endl<<"3 subtraktion"<<endl;
            cout <<"4 multiplikation"<<endl<<"5 alle Berechnungen durchfuehren"<<endl;
    
            while(iWert)
                    {
                    cin >> iWert;
                    if(iWert>5)
                            {
                            cout <<"Fehler, sie muessen zwischen 1-5 waehlen!"<<endl;
                            cout <<"Waehlen sie neu:"<<endl;
                            continue;
                            }
                    else break;
                    }
    
            cout <<"Geben Sie jetzt 2 Zahlen untereinander ein"<<endl;
            cout <<"Verwenden Sie den Punkt anstelle eines Kommas!"<<endl;
            cin >>fEingabe_1;
            cin >>fEingabe_2;
    
            switch (iWert)
                    {
                    case 1:
                            cout <<Add(fEingabe_1, fEingabe_2);
                            break;
                    case 2:
                            cout <<Div(fEingabe_1, fEingabe_2);
                            break;
                    case 3:
                            cout <<Sub(fEingabe_1, fEingabe_2);
                            break;
                    case 4:
                            cout <<Mul(fEingabe_1, fEingabe_2);
                            break;
                    case 5: All(fEingabe_1, fEingabe_2);
                            break;
                    default:
                            cout <<"Fehler!";
                    }
    
                    char p[50];
                    cin.getline(p,50);
                    cin.getline(p,50);
            }
    //======================================================================
    

Anmelden zum Antworten