wegen setfill (' ') nichts mehr dahinter?



  • Hallo,

    habe folgendes Programm

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main()
    {
    	float fRestschuld;
    	float fZinssatz;
    	int iAnnuitaet;
    
    	cout << "Bitte geben Sie die Restschuld ein: ";
    	cin >> fRestschuld;
    	cout << "\nBitte Geben Sie den Zinssatz ein: ";
    	cin >> fZinssatz;
    	cout << "Bitte geben Sie die Annuit\x84t ein: ";
    	cin >> iAnnuitaet;
    
    	cout << "Die Berechnung ihres Darlehens hat folgendes ergeben: "
    		 <<  setw(10) << setfill( ' ') << "Datum" << " | " << right << "Tilgung" << " | " << "Zinsen" << " | " << "Restschuld" << " | " << endl
    		 <<"-----------|---------|--------|------------|" << endl
    		 << setw(10) << setfill( ' ') << "31.12.2007" << " | " << iAnnuitaet-(fRestschuld*(fZinssatz/100)) << " | " <<
    
    	system("PAUSE");
    	return 0;
    }
    

    Wieso zerhaut mir dabei setfill alles was danach kommt...? ich seh meinen fehler nicht?



  • Kannst du dein Problem vll. etwas konkretisieren?
    Wo liegt das Problem bei der Ausgabe; wie soll es aussehen?

    PS:
    Zumindest in deinem geposteten Code fehlt ein endl in Zeile 21



  • Hm... also ich hab das Programm jetzt mal zu ende geschrieben:

    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main()
    {
    	float fRestschuld;
    	float fZinssatz;
    	int iAnnuitaet;
    
    	cout << "Bitte geben Sie die Restschuld ein: ";
    	cin >> fRestschuld;
    	cout << "\nBitte Geben Sie den Zinssatz ein: ";
    	cin >> fZinssatz;
    	cout << "Bitte geben Sie die Annuit\x84t ein: ";
    	cin >> iAnnuitaet;
    
    	cout << "Die Berechnung ihres Darlehens hat folgendes ergeben: " << endl
    		 <<  setw(10) << setfill(' ') <<  "Datum" << " | " << setw(10) << setfill(' ') << "Tilgung" << " | " << setw(10) << setfill(' ') << "Zinsen" << " | " <<setw(10) << setfill(' ') << "Restschuld" << " | " << endl
    		 <<"-----------|------------|------------|------------|" << endl
    		 << setw(10) << setfill(' ') << "31.12.2007" << " | " << setw(10) << setfill(' ') << static_cast<float>(iAnnuitaet)/12*2-(fRestschuld*(fZinssatz/100/12*2)) << " | " << fRestschuld*(fZinssatz/100/12*2) << " | " << setw(10) << setfill(' ') << fRestschuld+fRestschuld*(fZinssatz/100/12*2)-iAnnuitaet/12*2 << endl;
    
    	fRestschuld=fRestschuld+fRestschuld*(fZinssatz/100/12*2)-iAnnuitaet/12*2;
    
    	cout << setw(10) << setfill(' ') << "31.12.2008" << " | " << setw(10) << setfill(' ') << iAnnuitaet-(fRestschuld*(fZinssatz/100)) << " | " << fRestschuld*(fZinssatz/100) << " | " << setw(10) << setfill(' ') << fRestschuld+fRestschuld*(fZinssatz/100)-iAnnuitaet << endl;
    
    	fRestschuld=fRestschuld+fRestschuld*(fZinssatz/100)-iAnnuitaet;
    
    	cout << setw(10) << "31.12.2009" << " | " << setw(10) << iAnnuitaet-(fRestschuld*(fZinssatz/100)) << " | " << fRestschuld*(fZinssatz/100) << " | " << setw(10) << fRestschuld+fRestschuld*(fZinssatz/100)-iAnnuitaet << endl;
    
    	fRestschuld=fRestschuld+fRestschuld*(fZinssatz/100)-iAnnuitaet;
    
    	cout << setw(10) << "31.12.2010" << " | " << setw(10) << iAnnuitaet-(fRestschuld*(fZinssatz/100)) << " | " << fRestschuld*(fZinssatz/100) << " | " << setw(10) << fRestschuld+fRestschuld*(fZinssatz/100)-iAnnuitaet << endl;
    
    	fRestschuld=fRestschuld+fRestschuld*(fZinssatz/100)-iAnnuitaet;	 
    
    	cout << setw(10) << "31.12.2011" << " | " << setw(10) << iAnnuitaet-(fRestschuld*(fZinssatz/100)) << " | " << fRestschuld*(fZinssatz/100) << " | " << setw(10) << fRestschuld+fRestschuld*(fZinssatz/100)-iAnnuitaet << endl;
    
    	fRestschuld=fRestschuld+fRestschuld*(fZinssatz/100)-iAnnuitaet;
    
    	cout << setw(10) << "31.10.2012" << " | " << setw(10) << iAnnuitaet-(fRestschuld*(fZinssatz/100/12*10)) << " | " << fRestschuld*(fZinssatz/100/12*10) << " | " << setw(10) << fRestschuld+fRestschuld*(fZinssatz/100/12*10)-iAnnuitaet/12*10 << endl;
    
    	system("PAUSE");
    	return 0;
    }
    

    Folgende Probleme habe ich noch:

    • trotz setw(10) und setfill scheine ich es nicht hinzubekommen, dass die "Felder" wirklich untereinander liegen (also eine art Tabelle entsteht) Was genau mache ich falsch?
    • Laut Aufgabenstellung soll die Annuität als Integer Variable initalisiert werden. Um aber auf korrekte Ergebnisse bei zwei Berechnungen zu kommen (in den beiden Jahren, wo es nicht exakt 12 Monate sind und somit auch nicht wirklich die volle annuität gezahlt wird). Ist es legitim (bzw vernünftig) dort mit static_cast zu arbeiten?

    Es ist so, dass wird Laut aufgaben zettel im ersten jahr bei Darlehen 10000, Zinsen 5 (%) und Annuität 1000 auf 83.33 tilgung und Zinsen kommen sollen. Auf 83.33 Tilgung komme ich aber eben nur wenn die annuität NICHT Integer ist

    • Wie genau bekomme ich es hin, dass die Zahlen mit genau 2 Nachkommastellen angezeigt bekommen? mit setprecission kann ich ja nur die genaue länge bestimmen (beispielsweise genau 5 zahlen) aber nicht den genauen nachkomma bereich, oder?

    Danke schonmal

    Matix



  • wenn die aufgabe fordert, eine variable vom typ int zu deklarieren und du bei jeder verwendung nen static_cast<float> davor haust, kann das irgendwie nicht im sinne des erfinders gewesen sein 😉

    rechne doch einfach in cent, oder zehntel cent oder hunderstel cent, wenn du mehr präzision brauchst.



  • naja die aufgabestellung war:

    Aufgabe: Es ist eine Tilgungstabelle zu erstellen, die jeweils zum Jahresende und zum Laufzeitende die Höhe
    der Tilgung, der Zinsen und der Restschuld ausweist. Schreiben Sie ein Programm, das
    1. den Darlehensbetrag in die float-Variable restschuld, den Zinssatz in die float-Variable zinssatz und die
    Annuität in die int-Variable annuitaet von der Konsole einliest.
    2. diese Tabelle formatiert (s.Bild) auf der Konsole ausgibt.
    Hinweis: Die Gewichtung von Jahresteilbeträgen erfolgt auf Monatsbasis.

    Vielleicht bin ich ja nur zu doof die Aufagebstellung wirklich zu durchblicken, aber ich hätte jetzt gesagt das heisst ich muss mit integer initalisieren.

    Für eine genaue Berechnung brauche ich aber definitiv float...


Anmelden zum Antworten