Problem mit Zinsberechnung & der Tabelle dazu



  • Hallo,
    ich bin nicht gerade geübt in C,
    und habe folgendes Problem, in diesem Bsp soll eine Tabelle aufgezeigt werden die Mir die Jahre den Habenzins und das Gesammtkapital nach dem n Jahr ausgibt.
    leider gibt er mir nur Jahr 1 aus (und produziert eine Endlosschleife wenn ich auf (ich glaub die Taste nennt sich Enter) drück.

    /* f = Anfangskapital,bspweise 500 a = Zinssatz,bsp 5 y = Laufzeit bsp 10*/
        double b;
        for (n = 1; n <= y; n++)
        {
        b = f*(1+(a/100)); //immer den selben Wert, den falsch beim bsp immer 5
        y=b; /*hier gibt er immer nur den selben Wert an auch wenn er im ersten 
    Jahr richtig ist ist er in allen andern falsch bsp immer 525*/
    
           printf("%8lf %21lf %29lf \n", n, a, y);
    
           getchar();
    

    Bitte helft mir, ich habe schon viel rumprobiert "Formel versucht zu ändern"
    Hoffe das das alles nicht der total falsche Ansatz ist!
    Das mit n hat mal funktioniert, grins 😞 jetzt aber nichtmehr! 😮

    Danke



  • double b;
    for (n = 1; [b][u]n <= y[/u][/b]; n++)
    {
        b = f*(1+(a/100));
        [b][u]y=b;[/u][/b]
        printf("%8lf %21lf %29lf \n", n, a, y);
        getchar();
    }
    


  • Klar, daß Du immer nur den Wert nach dem 1 Jahr herausbekommst: das Startkapital steht in "f" und Du weist das Ergebnis "b" zu. Im nächsten Schleifendurchlauf rechnet er wieder mit "f"...

    Wenn Du folgendes machst, dann klappts mit dem Hochrechnen:

    double b = f;
    

    Dann in der Schleife...

    b = b + (1+(a/100));
    

    ...damit er den Zineszins richtig rechnen kann.

    Wie c.rackwitz schon "gesagt" hat, ist y=b natürlich übel und scheint eine Endlosschleife zu produzieren....



  • AndreasD schrieb:

    Endlosschleife

    eher bis f*(1+(a/100)), was, bei f = 1.000.000 taler schon mal den bildschirm flutet.



  • Ist jetzt keine Endlosschleife mehr und gibt die richtigen Werte an!
    Dank an alle!
    Auch wenn ich den ersten Wink mit dem Zaunpfahl nicht verstanden habe! 😉

    double b = f; /* damit b nicht immer mit f1 läuft */
        double c = f;
        for (n = 1; n <= y; ++n)
        {
        b = b * (1+(a/100));
        c = c*(1+(a/100));
    
           printf("%8f %21lf %29lf \n", n, c-f, b);
    
           getchar();
    


  • b und c nehmen immer gleiche werte an; sie sind redundant. c kannst du entfernen.


Anmelden zum Antworten