Hilfe bei Funktion Zinsberechnung



  • Hallo liebe Community,

    habe da ein Problem, aber finde den Fehler nicht 😞 aber er ist in der Funktion
    Funktion gibt den falschen Betrag zurück
    Beispiel wäre :
    Anfangskapital :25800.5
    Zinssatz: 5
    Jahre : 5
    Ergebnis = 32928.7
    das sollte rauskommen.

    Hier der Code

    #include<iostream>
    #include<iomanip>

    using namespace std ;
    // Funktion deklarieren
    double zinsberechnung(double dkapital, double dZins_satz, int iJahre);

    int main ()
    {
    double dkapital, dZins_satz, dRückgabewert;
    int iJahre;

    // Eingabe
    cout<<"---------------------------------------------------------"<<endl;
    cout<<"Anfangskapital : ";cin>>dkapital;
    cout<<"Zinssatz : ";cin>>dZins_satz;
    cout<<"Jahre : ";cin>>iJahre;

    cout<<"Nach "<<iJahre<<" Jahren "<<endl;
    //Funktionsaufruf
    dRückgabewert=zinsberechnung(dkapital,dZins_satz,iJahre);

    cout<<"betraegt ihr Eigenkapital von "<<dkapital<<" "<<dRückgabewert<<" EUR "<<endl;

    cin.get();cin.get();

    }
    //Funktion definieren
    double zinsberechnung(double dkapital, double dZins_satz, int iJahre)
    {
    double Rückgabewert;
    do
    {
    Rückgabewert = dkapital * dZins_satz/100 ,
    iJahre--;

    }while (iJahre>=0);

    return Rückgabewert;
    }



  • Probier mal:

    double zinsberechnung(double dkapital, double dZins_satz, int iJahre)
    {
    
      do
      {
        dkapital = dkapital + dkapital * dZins_satz/100 ,
        iJahre--;
    
      }while (iJahre>=0);
    
      return dkapital;
    }
    


  • Hallo Belli,
    bedanke mich für die schnelle Antwort, aber er verrechnet sich um fast 1500 EUR.
    Das Ergebnis ist nun 34575.1 statt 32928.70.
    Außerdem ist mir noch nicht ganz klar wieso man das Kapital in der Funktion zweimal plus nimmt ?



  • double dkapital, dZins_satz, dRückgabewert;
    

    😮
    Ne, man. Keine Umlaute in Variablennamen. Kompiliert bei mir schon gar nicht.

    Und: benutze Codetags. Super nervig für die Antwortenden. Geht gar nicht.
    https://www.c-plusplus.net/forum/200753

    #include<iostream> 
    #include<iomanip> 
    
    using namespace std ; 
    
    // Funktion deklarieren // naja, ok
    double zinsberechnung(double dkapital, double dZins_satz, int iJahre); 
    
    int main () 
    { 
        // vergiss mal die praefixe vor den variablennamen.
        // auch wenn du das gerade "ganz gut" findest: nein, lass es.
        double kapital, zins_satz, rueckgabewert;
        int jahre; 
    
        // Eingabe 
        cout << "---------------------------------------------------------" << endl; 
        cout << "Anfangskapital : "; // ein paar Leerzeichen und neue Zeilen machen den Code schoen lesbar :)
        cin >> kapital; 
        cout << "Zinssatz : ";
        cin >> zins_satz; 
        cout << "Jahre : ";
        cin >> jahre; 
    
        cout << "Nach " << jahre << " Jahren " << endl; 
    
        //Funktionsaufruf 
        rueckgabewert = zinsberechnung(kapital, zins_satz, jahre); 
    
        // du benutzt Umlaute in Variablennamen aber nicht in der Ausgabe?!
        cout << "beträgt ihr Eigenkapital von "<< kapital<<" " << rueckgabewert<< " EUR " << endl; 
    
        cin.get();cin.get(); // das geht auch besser, siehe unten
    
    } 
    
    // Funktion definieren 
    // die Funktion muss nicht separat deklariert und definiert werden, kannst du natuerlich so machen, wenn du willst.
    double zinsberechnung(double kapital, double zins_satz, int jahre) 
    { 
        // Rückgabewert ist ein schlechter name.
        // wie waere es mit neues_kapital?
        double neues_kapital = kapital;
    
        // nee, nicht do while. Wer benutzt denn die?
        // besser for:
        for(int i = 0; i < jahre; ++i)
        {
            // so, dein eigentliches problem.
            // ich entferne mal die loesung, schreib mal die formel auf
            // wenn du es per hand (oder mit Taschenrechner) ausrechnen kannst, ist die loesung in c++ eine kleinigkeit
        }
    
        return neues_kapital;
    }
    


  • Kapital * Zins / 100 ergibt die Zinsen für ein Jahr. Die addiere ich zu dem Kapital - und das dann für jedes Jahr

    Aber ich sehe gerade, Du hast in der Funktion ein Komma anstelle eines Semikolons am Ende der Zeile, und ich habe das übersehen und übernommen, berichtige das mal.

    PS Deine Schleife läuft zu weit, mach mal aus while (iJahre>=0) --> while(iJahre > 0)



  • Danke Belli und Hype ++ für die antworten es funktioniert nun, bin vollkommen neu in der C++ Szene deswegen bedanke ich mich für jede helfende Hand 😃
    MFG
    Moritz Vogt 😃


Anmelden zum Antworten