C Fehler im Code - Zinstilgung

Eddie0150

Cadet 2nd Year
Registriert
Feb. 2014
Beiträge
29
Hallo Again :)

Ich bin mittlerweile in meinem C Buch ein wenig weiter und hänge nun bei einer Aufgabe bei der ich eine Tilgungsplan erstellen muss. Debugger sagt keine Fehler aber wenn ich Ausführe und die Daten Darlehen, Nominalzins, Rate, usw Eingebe kommt am ende eine Fehlermeldung anstatt eine Ausrechnung der Tilgung und Restschulden. Hat Jemand ne idee ?

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

main(){

float rest, rate, zins1, zins2, sondertilgung;
int bindung;

int monat;
float zins, zinsen, tilgung, sonderz;

printf("Darlehen: ");
scanf("%f", &rest);
printf("Nominalzins: ");
scanf("%f", &zins1);
printf("Monatsrate: ");
scanf("%f", &rate);
printf("Zinsbindung (Jahre): ");
scanf("%d", &bindung);
printf("Zinsatz nach Bindung: ");
scanf("%f", &zins2);
printf("Jaehrliche Sondertilgung: ");
scanf("%f", sondertilgung);

printf("\nTilgungsplan: \n\n");
printf("Monat Zinssatz Zinsen Tilgung Sondertilg Rest\n");

for ( monat = 1; rest > 0; monat = monat +1)
{
printf("%5d", monat);

if (monat <= bindung * 12)
zins = zins1;
else

zins = zins2;
printf(" %10.2f", zins);

zinsen = rest * zins / 1200;
printf("%10.2f", zinsen);
tilgung = rate - zinsen;

if (tilgung > rest)

tilgung = rest;

printf("%10.2f", tilgung);
rest = rest - tilgung;

sonderz = 0;
if ( (monat % 12) == 0)
{ sonderz = sondertilgung;
if(sonderz> rest)
sonderz = rest;
}
printf("%10.2f", sonderz);
rest = rest - sonderz;
printf("%10.2f", rest);

printf("\n");
}
}
 
Hey,

bitte Code formatieren. Dazu den Code zwischen im Editor das Code-Segemnet nutzen. Dann ist das schon viel leserlicher für uns.

Wie lautet die Fehlermeldung denn?
 
Möchtest du uns vielleicht noch mitteilen WELCHER Fehler aufgetreten ist, oder sollen wir uns mehr Arbeit machen als notwendig?

Greetz
hroessler
 
1. Pack das ganze mal ein Code Klammern, dann hat man Zeilennummern.
2. statt monat = monat + 1 geht auch mont += 1 oder monat++
3. Wie ist denn die Fehlermeldung? So weit ich seh gibst du keine im Code aus.

Und ja, da feht das & (s. unter mir)
 
Zuletzt bearbeitet:
scanf("%f", sondertilgung);

da fehlt ein &
 
scanf("%f", sondertilgung);
da fehlt das &

Was if und else angeht, hoffe ich dass du in deinem Programm schön{ } gesetzt hast

Also

if (monat <= bindung * 12){
zins = zins1;
}
else {
zins = zins2;
printf(" %10.2f", zins);

zinsen = rest * zins / 1200;
printf("%10.2f", zinsen);
tilgung = rate - zinsen;
}

Und du hast fix einen Fehler, da dein Programm sich aufhängt.

Am besten schreibe die Angabe, dann den Code wie du es in deinem Programm stehen hast und die Fehlermeldung.
 
Zuletzt bearbeitet:
fehler.jpg Sorry :0. Also wie gesagt Debugger läuft ohne Fehler durch nur beim Ausführen wenn ich die Variablen befüllt habe kommt das.

d0zer wie Formatier ich einen code ?
 
[ code ] [/ code]

nur ohne die Leerzeichen
 
Code:
 #include <stdio.h>
#include <stdlib.h>

	main(){

	float rest, rate, zins1, zins2, sondertilgung;
	int bindung;
	
	int monat;
	float zins, zinsen, tilgung, sonderz;
	
	printf("Darlehen:                  ");
	scanf("%f", &rest);
	printf("Nominalzins:               ");
	scanf("%f", &zins1);
	printf("Monatsrate:                ");
	scanf("%f", &rate);
	printf("Zinsbindung (Jahre):       ");
	scanf("%d", &bindung);
	printf("Zinsatz nach Bindung:      ");
	scanf("%f", &zins2);
	printf("Jaehrliche Sondertilgung:  ");
	scanf("%f", sondertilgung);
	
	printf("\nTilgungsplan: \n\n");
	printf("Monat Zinssatz Zinsen Tilgung Sondertilg Rest\n");
	
	for ( monat = 1; rest > 0; monat = monat +1)
	{
		printf("%5d", monat);
		
		if (monat <= bindung * 12)
			zins = zins1;
		else
		
		zins = zins2;
		printf(" %10.2f", zins);
		
		zinsen = rest * zins / 1200;
		printf("%10.2f", zinsen);
		tilgung = rate - zinsen;
	
		if (tilgung > rest)
		
		tilgung = rest;
		
		printf("%10.2f", tilgung);
		rest = rest - tilgung;
		
		sonderz = 0;
		if (  (monat % 12) == 0)		
		{ sonderz = sondertilgung;
		if(sonderz> rest)
		sonderz = rest;
		}
		printf("%10.2f", sonderz);
		rest = rest - sonderz;
		printf("%10.2f", rest);
		
		printf("\n");		
	}	
}

Sorry wusste ich nicht :x
 
Eddie0150 schrieb:
Sorry :0. Also wie gesagt Debugger läuft ohne Fehler durch nur beim Ausführen wenn ich die Variablen befüllt habe kommt das.
Ich glaube, du weißt nicht, was ein Debugger ist. Informiere dich und dann nutze einen!
 
asdfman schrieb:
Ich glaube, du weißt nicht, was ein Debugger ist. Informiere dich und dann nutze einen!

War eig der Festen Hoffnung das das bei Dev C++ - F9 ist xD ? bzw Schaut er dann ob Fehler drinne sind und dannach Test ich ja mit F10 :0
 
Wie schon mehrfach erwähnt ist der Fehler in Zeile 23, das fehlende &.

Code:
scanf("%f", sondertilgung);
muss in
Code:
scanf("%f", &sondertilgung);
geändert werden.

Damit scanf eine Variabel auch außerhalb ihres Scopse ändern kann, benötigt sie einen Pointer um indirekt den Wert an der Speicheradresse zu ändern.
 
fehler 2.jpg .... ach so kleine fehler das ärgert mich immer total <_<... danke euch.

Wieso wird im ersten Jahr kein rest angezeigt aber im 13. monat geht es richtig weiter :o ?

Alles klar hatte ein falsches {} gesetzt. :) Danke für die Schnelle Hilfe.
 
Zuletzt bearbeitet:
Zurück
Oben