Problem bei einfachem Zinsprogramm (zu große Zahlen?)
-
Hallo,
bin grad dabei für eine Schulaufgabe ein Programm zu schreiben, indem man folgendes eingibt:
- monatliche Einzahlung
- Zinssatz
- Laufzeit
- gewünschter Auszahlungsbetrag nach der Laufzeitcout<<"Einzahlung (in Euro): "; float Rate; // monatlich eingezahlter Betrag cin>>Rate; cout<<"Zins (in Prozent): "; float Zins; // Zinssatz über die gesamte Laufzeit cin>>Zins; cout<<"Laufzeit (in Jahren): "; float L; // Dauer des angelegten Kapitals cin>>L; cout<<"Wartezeit (in Jahren): "; float W; // Zeitraum zwischen Einzahlung und Auszahlung cin>>W; cout<<"Rente (in Euro): "; float R; // monatlich ausgezahlter Betrag cin>>R; float K = 0; // Kapital L = L*12; // monatsgenaue Laufzeit int zaehler = 0; do // Berechnung des Kapitals während der Laufzeit { K = K * (1 + Zins / 100) + Rate; zaehler ++; } while (zaehler < L); int Auszahlungsdauer = 0;// Gibt an wie viele Monate Rente ausgezahlt wird do // Berechnung des Kapitals während der Rente { K = (K - R) * (1 + Zins / 100); Auszahlungsdauer ++; } while (K > 0);Bei zu großen Werten fängt das Programm an falsch zu rechnen (40 Jahre, 100 Euro monatlich und 5% Zins). Habs auch schon mit long double versucht, leider klappt das auch nicht. Soo groß sind meine Zahlen eigentlich auch nicht? Dachte nicht, das es damit Schwierigkeiten geben würde.

Hat wer nen Tipp parat?

mfg
metler
-
Ehm gib deine konstanten Werte mal (bei float) mit .f an ... und dann berechnet man Zinseszins per power (potenz) ...
-
Das Problem ist die Auszahlungsschleife. Wenn am Anfang sehr viel eingezahlt wird, erreicht das Kapital sehr große Werte. Dann kann der Zinsertrag bei der Rente größer als die Rente selbst werden und du landest in einer Endlosschleife. 5% Zinsen pro Monat sind auch wirklich selten.

-
Danke Braunstein, da lag der Hund begraben. Wäre ich nie drauf gekommen.
Nun funktioniert wunderbar. 
mfg
metler