Gesamtkapital errechnen



  • Hallo,

    ich stehe noch relativ am Anfang meiner C Künste und habe irgendwo in meinem Programm, das das Gesamtkapital ausrechnen soll einen Fehler. Ich tippe irgendwie auf eine Endlosschleife, da das Programm mich noch frägt zu welchem Zinssatz ich anlegen möchte, aber danach nichts mehr tut.

    Vielen Dank schonmal 🙂

    #include <stdio.h>
    #include <stdlib.h>

    /*
    *
    */
    double Gesamtkapital;
    double Anfangskapital;
    double Zinssatz;
    double Kapital_nach_Jahr;
    int Dauer;

    int main() {

    printf("Bitte geben Sie das Anfangskapital ein:\n ");
    scanf("%lf", &Anfangskapital);

    if (Anfangskapital<=0) {
    printf("Fehler: negatives/kein Anfangskapital\n");
    }

    printf("Wie viele Jahre wollen Sie das Geld anlegen?\n");
    scanf("%d", &Dauer);

    if (Dauer<=0) {
    printf("Fehler: negative/keine Dauer\n");
    }

    printf("Zu welchem Zinssatz soll das Geld angelegt werden?\n ");
    scanf("%lf", &Zinssatz);

    Zinssatz=Zinssatz/100;
    if (Zinssatz<=0){
    printf("Fehler: negativer/kein Zinssatz\n");
    }

    Kapital_nach_Jahr=Anfangskapital*Zinssatz+Anfangskapital;
    --Dauer;

    while (Dauer>0)
    Kapital_nach_Jahr = Kapital_nach_Jahr + Kapital_nach_Jahr * Zinssatz;
    --Dauer;

    Gesamtkapital=Kapital_nach_Jahr;
    printf("Das Gesamtkapital beträgt: %lf", &Gesamtkapital);

    return (0);

    }



  • Du brauchst hier:
    while (Dauer>0) //<===== eine öffnende und ...
    Kapital_nach_Jahr = Kapital_nach_Jahr + Kapital_nach_Jahr * Zinssatz;
    --Dauer; // hier eine schließende geschweifte Klammer



  • Wolle ich auch gerade sagen...
    Bitte nächstes mal cpp Tags verwenden um den Code zu formatieren.

    EDIT: Sehe gerade noch ein Fehler:

    printf("Das Gesamtkapital beträgt: %lf", &Gesamtkapital);
    

    sollte so heissen:

    printf("Das Gesamtkapital beträgt: %lf", Gesamtkapital);
    


  • Siehe dazu auch http://www.c-plusplus.net/forum/303984

    Und bei printf ist das %f sowohl für float als auch für double.
    (C11 akzeptiert das %lf und die anderen Versionen haben es toleriert).

    printf("Das Gesamtkapital beträgt: %f", Gesamtkapital);
    


  • Aah dankeschön 🙂

    Jetzt kommt ein Ergebnis raus, aber nicht das richtige.. Also entweder verrechne ich mich oder das Programm läuft noch nicht so wie ich möchte^^



  • Du kannst in deiner while-Schleife auch Zwischenergebnisse ausgeben.

    Welchen Wert gibst du denn für den Zinssatz ein?



  • Ah genau, ich hab noch was geändert, ich habe den Zinssatz noch durch 100 geteilt, damit man ganze Zahlen eingeben kann. Ich hab jetzt immer mit 3 gerechnet und 5000 Euro und 5 Jahren. Aber bei mir kommt was andres bei raus als beim Programm.



  • Jetzt wären noch die Werte von dir und vom Programm interessant, damit man dir sagen kann, welcher Wert richtig ist.
    Am besten nochmal genau angeben

    Anfangskapital: 5000
    Zinssatz      : 5
    Dauer         : 3
    
    Dein Ergebnis: Kapital_nach_Jahr:
    Computer     : Kapital_nach_Jahr:
    


  • so also nach meiner Rechnung komme ich auf 5627,54405
    das Programm kommt auf 5796,370372
    Woran kann das liegen? Habe ich mich verrechnet?



  • Dann rechne bei dir nochmal ein ein Jahr weiter.
    Oder beim Computer ein Jahr weniger.
    Ich hoffe die richtige Formel kennst du.



  • Ah okay, danke und woran liegt das dann, dass das Programm ein Jahr zu viel rechnet? Habe ich einen Denkfehler drin?



  • Ich kenne die Formel: Anfangskapital * (1+Zinssatz/100)Laufzeit
    Bei dir 5000 * 1,03[h]5[/h] = 5796,37

    Siehe auch http://de.wikipedia.org/wiki/Zinseszins#mit_Zinseszins

    Welche Formel hast du?



  • Ich habe keine richtige Formel genommen, ich hab es jetzt per Hand einfach nachgerechnet. Hab ich jetzt den Fehler gemacht?



  • SeinEngel schrieb:

    Ich habe keine richtige Formel genommen, ich hab es jetzt per Hand einfach nachgerechnet. Hab ich jetzt den Fehler gemacht?

    Schaun wir mal:

    Anfang	 5000,00
    1. Jahr	5150,00
    2. Jahr	5304,50
    3. Jahr	5463,64
    4. Jahr	5627,54
    5. Jahr	5796,37
    

    Für sowas ist eine Tabellenkalkulation echt spitze 🙂



  • Okay, mein Denkfehler, danke 🙂

    Das heißt das Programm funktioniert 🙂 juhu 🙂



  • 3 Sachen noch:
    statt

    Kapital_nach_Jahr=Anfangskapital*Zinssatz+Anfangskapital;
    --Dauer;
    

    shreibst du nur

    Kapital_nach_Jahr=Anfangskapita
    

    l

    statt

    Kapital_nach_Jahr = Kapital_nach_Jahr + Kapital_nach_Jahr * Zinssatz;
    

    schreibst du

    Kapital_nach_Jahr = Kapital_nach_Jahr * (1 + Zinssatz);
    

    Und du erkennst zwar die Fehleingaben, aber reagierst nicht darauf.
    Dein Programm läuft weiter als wäre nichts geschehen.



  • okay, vielen vielen Dank


Anmelden zum Antworten