Variable ausgeben und neu setzen?
-
Hallo,
ich studiere Informatik im 1ten Semester an der FH Darmstadt und wir haben nunmal Programmieren I und dort nehmen wir C++ durch.
Nun habe ich meine ganzen Scripte durchgesehen, finde aber keine Konkrete Lösung für mein Porblem. Das ganze ist eine Praktikums-Aufgabe.
Das Ziel ist, das man ein Anfangs Darlehen, den Zinssatz und die Annuitaet einliest. Der Zinssatz und die Annuitaet verändern sich während der Laufzeit nicht, einzig die Restschuld.
MEin Code sieht wie folgt aus.
/* Datei: Projekt_D.cpp Autor: Gunnar Goebel Funtkion: Berechnung von Restschuld bei Darlehen */ #include <iostream> #include <iomanip> #include <string> using namespace std; int main () { float Restschuld; float Zinssatz; int Annuitaet; string line( 45, '-' ); cout << "Bitte geben Sie das Darlehen ein: "; cin >> Restschuld; cout << "Bitte geben Sie den Zinsatz ein: "; cin >> Zinssatz; cout << "Bitte geben Sie die Annuitaet ein: "; cin >> Annuitaet; cout << "Die Brechechnung des eingegeben Darlehens hat folgendes ergeben: " <<endl; cout << setfill(' ') << setw(10) << "Datum" << "|" << setfill(' ') << setw(10) << "Annuitaet" << "|" << setfill(' ') << setw(10) << "Zinsen" << "|" << setfill(' ') << setw(10) << "Restschuld" << endl << line << endl << setfill(' ') << setw(10) << "31.12.2006" << "|" << setfill(' ') << setw(10) << Annuitaet << "|" << setfill(' ') << setw(10) << Restschuld*Zinssatz/100 << "|" << setfill(' ') << setw(10) << Restschuld+Restschuld*Zinssatz/100-Annuitaet << endl << setfill(' ') << setw(10) << "31.12.2007" << "|" << setfill(' ') << setw(10) << Annuitaet << "|" << setfill(' ') << setw(10) << Restschuld*Zinssatz/100 << "|" << setfill(' ') << setw(10) << Restschuld+Restschuld*Zinssatz/100-Annuitaet << endl << setfill(' ') << setw(10) << "31.12.2008" << "|" << setfill(' ') << setw(10) << Annuitaet << "|" << setfill(' ') << setw(10) << Restschuld*Zinssatz/100 << "|" << setfill(' ') << setw(10) << Restschuld+Restschuld*Zinssatz/100-Annuitaet << endl << setfill(' ') << setw(10) << "31.12.2009" << "|" << setfill(' ') << setw(10) << Annuitaet << "|" << setfill(' ') << setw(10) << Restschuld*Zinssatz/100 << "|" << setfill(' ') << setw(10) << Restschuld+Restschuld*Zinssatz/100-Annuitaet << endl << setfill(' ') << setw(10) << "31.12.2010" << "|" << setfill(' ') << setw(10) << Annuitaet << "|" << setfill(' ') << setw(10) << Restschuld*Zinssatz/100 << "|" << setfill(' ') << setw(10) << Restschuld+Restschuld*Zinssatz/100-Annuitaet << endl << setfill(' ') << setw(10) << "31.10.2011" << "|" << setfill(' ') << setw(10) << Annuitaet << "|" << setfill(' ') << setw(10) << Restschuld*Zinssatz/100 << "|" << setfill(' ') << setw(10) << Restschuld+Restschuld*Zinssatz/100-Annuitaet << endl; return 0; }Ich finde leider keinen Weg, dem Programm bei der letzen Berechnung in der Zeile mitzuteilen, das das berechnete die neue Restschuld beträgt.
Ich hatte schon überlegt mit einer neuen Variable zu rechnen, allerdings dürfen wir nur die 3 verwenden.
Ich hoffe, ihr könnt mir bei einer für Euch wohl so banalen Frage helfen.
-
Hi,
du nimmst ja immer den Ausgangswert, deswegen wird sich natürlich auch bei keiner Ausgabe etwas ändern.
Um deine vorherige Restschuld mit einzubeziehen, musst das in etwa so machen:
Restschuld=Restschuld+Restschuld*Zinssatz/100-AnnuitaetSo wird dann der neu berechnete Wert der Variablen zugewiesen.
-
Hallo,
das hatte ich schon so probiert, aber wenn ich es compiliere bekomme ich unter MS Visual Studio 6 folgenden Fehler
Compiling...
Projekt_D.cpp
D:\Dateien\Studium\FH Darmstadt\Programmieren 1\Praktika\2006_04_07\Projekt_D\Projekt_D.cpp(28) : error C2563: mismatch in formal parameter list
D:\Dateien\Studium\FH Darmstadt\Programmieren 1\Praktika\2006_04_07\Projekt_D\Projekt_D.cpp(28) : error C2568: '<<' : unable to resolve function overload
could be 'class std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> > &__cdecl std::endl(class std::basic_ostream<unsigned short,struct std::char_traits<unsigned short> > &)'
c:\programme\microsoft visual studio\vc98\include\ostream(377) : see declaration of 'endl'
or 'class std::basic_ostream<char,struct std::char_traits<char> > &__cdecl std::endl(class std::basic_ostream<char,struct std::char_traits<char> > &)'
c:\programme\microsoft visual studio\vc98\include\ostream(372) : see declaration of 'endl'
or 'class std::basic_ostream<_E,_Tr> &__cdecl std::endl(class std::basic_ostream<_E,_Tr> &)'
c:\programme\microsoft visual studio\vc98\include\ostream(367) : see declaration of 'endl'
Error executing cl.exe.Projekt_D.obj - 2 error(s), 0 warning(s)

-
Mach halt nicht alles in einem cout.
Sonder in etwa socout << setfill(' ') << setw(10) << "31.12.2006" << "|" << setfill(' ') << setw(10) << Annuitaet << "|" << setfill(' ') << setw(10) << Restschuld*Zinssatz/100 << "|" << setfill(' ') << setw(10) << Restschuld+Restschuld*Zinssatz/100-Annuitaet << endl; Restschuld=Restschuld+Restschuld*Zinssatz/100-Annuitaet; cout << setfill(' ') << setw(10) << "31.12.2007" << "|" << setfill(' ') << setw(10) << Annuitaet << "|" << setfill(' ') << setw(10) << Restschuld*Zinssatz/100 << "|" << setfill(' ') << setw(10) << Restschuld+Restschuld*Zinssatz/100-Annuitaet << endl; ...Wobei ich das ganze noch in eine Schleife packen würde, ich weis aber nicht ob ihr sowas schon hattet
-
Storm.Xapek.de schrieb:
Wobei ich das ganze noch in eine Schleife packen würde, ich weis aber nicht ob ihr sowas schon hattet
Genau! und die Schleifen müsst Ihr sowieso lernen. Da bei der Ausgabe ohnehin die Restschuld am Ende des Jahres benötigt wird, kannst Du sie auch vorher ausrechnen. Der Aufruf von setfill ist auch nur einmal nötig. Der ostream merkt sich das bis zum nächsten setfill. Das gilt übrigens für alle Einstellungen ausgenommen setw.
All das zusammengenommen sähe dann so aus:cout << setfill(' '); // ' ' ist aber eh' die Default-Belegung des Füllzeichens for( int jahr = 2006; jahr <= 2011; ++jahr ) { float Zinsen = Restschuld*Zinssatz/100; Restschuld = Restschuld + Zinsen - Annuitaet; // neue Restschuld berechnen cout << "31.12." << jahr << "|" << setw(10) << Annuitaet << "|" << setw(10) << Zinsen << "|" << setw(10) << Restschuld << endl; }Bem.: "31.12." << jahr // jahr ist 4-stellig -> sind 10 Zeichen
Gruß
Werner