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 angebenAnfangskapital: 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 dir5000 * 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:
stattKapital_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