Probleme mit for - schleife...
-
Hallo, hab mir mal einen kleinen Tilgungsplan zusammengestellt.
Jedoch wird die for-schleife nicht ausgeführt...jedesmal bricht das Programm
vor der Schleifenausführung ab?!
Weiss jemand Rat?#include <stdio.h> #include <math.h> int we; int gebuehren; double zinssatz; double tilgung; double mrate; float Restkapital,zinsktokst,Restkapitalnach,gesamtkosten; double summezins = 0; int LfdMonat = 1; int main(void) { char satz[10]; printf("Bitte Waehrungseinheit (WE) eingeben: "); scanf("%s", &we); printf("\nKreditsumme in WE:"); scanf("%lf", &Restkapital); printf("\njaehrlicher Zinssatz in Prozent:"); scanf("%lf", &zinssatz); printf("\nMonatl.Gebuehren in WE:"); scanf("%i", &gebuehren); printf("\nMonatl.Zins-und Tilgungsaufwand (Annuitaet):"); scanf("%lf", &mrate); printf("\nLfdMonat\t Restkapital\t zinsKtokost\t tilgung\t Restkapnach\n"); for (LfdMonat = 1; Restkapital > 0; LfdMonat++) { printf("%10d", LfdMonat); zinsktokst = Restkapital * zinssatz / 1200 + gebuehren ; printf("%10.2f", zinsktokst); summezins = summezins + zinsktokst; tilgung = mrate - zinsktokst; printf("%8.2f", tilgung); Restkapitalnach = Restkapital - tilgung; printf("%8.2f", Restkapitalnach); Restkapital = Restkapital - tilgung; } printf("\nSumme der Zinsen: %-10.2f\n", summezins); printf("Monatliche Belastung: %-10.2f\n", mrate/12.0); return 0; }
Danke
-
Original erstellt von <Animator>:
**
float Restkapital,zinsktokst,Restkapitalnach,gesamtkosten;scanf("%lf", &Restkapital);
for (LfdMonat = 1; Restkapital > 0; LfdMonat++)
**%lf ist für double ("Long Float"), Restkapital ist aber vom Typ float. Das Programm hat dadurch kein definiertes Verhalten mehr (lt ANSI-Standard). Bei dir äußert sich das u.a. dadurch, dass in Restkapital irgendeine Zahl drinsteht, nur nicht die, die du eingegeben hast. Wahrscheinlich ist sie sogar negativ, so dass die Schleifenbedingung von Anfang an nicht erfüllt ist.
Also: Pass deine Formatstrings den Datentypen an oder umgekehrt (am besten gleich alles double, float bringts normalerweise nicht). Der Gnu Compiler hätte übrigens eine Warnung ausgegeben.
PS: Variablen sollten so lokal wie möglich sein. Also nimm deine ganzen globalen Variablen und pack sie zumindest in die main-Funktion.
-
Benutz mal Code-Tags
Ausserdem versuchst du am Anfang einen String in eine int-Variable einzulesen..
-
Original erstellt von nep:
**Benutz mal Code-Tags
**Hat er doch.
-
äh ?! das sieht aber nicht nach code-tags aus..
-
Original erstellt von nep:
äh ?! das sieht aber nicht nach code-tags aus..es ist nur nicht bunt. war also der knopf "Code" und nicht der knopf "C++-Code".
-
Mein Chemielehrer hat immer gesagt: "Je bunter desto dumm!"
Naja, aber besser lesen kann man die bunten Codetags schon...