Darlehensarten (Objekte und Klassen)
Es sollen verschiedene Darlehensformen verglichen werden.
Festdarlehen/Entfälliges Darlehen:
- fester Zinsbetrag
- Tilgung erst am Ende der Laufzeit
- Wikipedia-Eintrag
Tilgungsdarlehen
- gleichbleibende Tilgungsraten
- sinkende Zinskosten über die Laufzeit
- Wikipedia-Artikel
Aufgabe:
Erstellen Sie eine Klasse Darlehen, die als Startparameter die Kreditsumme, die Laufzeit, den Zinssatz, und die Art des Darlehens entgegennimmt(Integer oder String). Die Klasse sollte so gebaut sein, dass man ohne Probleme noch eine dritte Darlehensart (z.B. Das Annuitätendarlehen) hinzufügen kann.
Die Ausgabe sollte möglichst als Tabelle dargestellt werden, wobei die Ausgabe nicht Bestandteil der Klasse sein muss. Sie sollte folgende Spalten enthalten:
- Jahr
- Tilgung
- Restschuld
- Zinsen
- Gesamtbelastung
enthalten.
0 Kommentare
5 Lösung(en)
#include <iomanip>
#include <iostream>
using namespace std;
class darlehen
{
public:
void liesDaten(double summe, int laufzeit, double zinssatz, int auswahl);
private:
void fest(double summe, int laufzeit, double zinssatz);
void tilgung(double summe, int laufzeit, double zinssatz);
void ausgabe(int jahr, double tilgung, double restschuld, double zinsen, double gesamtbelastung);
};
int main(void)
{
int laufzeit, auswahl = 0;
double summe, zinssatz = 0;
darlehen a;
cout << "Bitte die Darlehenssumme eingeben: ";
cin >> summe;
cout << "Bitte die Laufzeit eingeben: ";
cin >> laufzeit;
cout << "Bitte den Zinssatz als Zahl eingeben :";
cin >> zinssatz;
cout << "Welche Art von Darlehen" << endl;
cout << "1. Festdarlehen" << endl;
cout << "2. Tilgungsdarlehen" << endl;
cin >> auswahl;
a.liesDaten(summe,laufzeit,zinssatz,auswahl);
return 0;
}
void darlehen::liesDaten(double summe, int laufzeit, double zinssatz, int auswahl)
{
switch(auswahl) {
case 1: fest(summe, laufzeit, zinssatz);
break;
case 2: tilgung(summe, laufzeit, zinssatz);
break;
}
}
void darlehen::fest(double summe, int laufzeit, double zinssatz)
{
double zinsen = 0;
zinsen = summe*zinssatz/100;
cout << setw(20) << "Jahr" << setw(20) << "Tilgung" << setw(20) << "Restschuld" << setw(20) << "Zinsen" << setw(20) << "Gesamtbelastung" << endl;
for(int i=1; i<laufzeit; i++) {
ausgabe(i,0,summe,zinsen,zinsen);
}
ausgabe(laufzeit,summe,summe,zinsen,zinsen+summe);
}
void darlehen::tilgung(double summe, int laufzeit, double zinssatz)
{
double tilgung = summe/laufzeit;
double zinsen = 0;
cout << setw(20) << "Jahr" << setw(20) << "Tilgung" << setw(20) << "Restschuld" << setw(20) << "Zinsen" << setw(20) << "Gesamtbelastung" << endl;
for(int i=1; i<=laufzeit; i++) {
zinsen=summe*zinssatz/100;
ausgabe(i,tilgung,summe,zinsen,zinsen+tilgung);
summe -= tilgung;
}
}
void darlehen::ausgabe(int jahr, double tilgung, double restschuld, double zinsen, double gesamtbelastung)
{
cout << setw(20) << jahr << setw(20) << tilgung << setw(20) << restschuld << setw(20) << zinsen << setw(20) << gesamtbelastung << endl;
}
Lösung von: Name nicht veröffentlicht
public class Darlehen {
public static void main(String[] args) {
// TODO Auto-generated method stub
vergleich(200000F, 6F, 5, 1);
vergleich(200000F, 6F, 5, 2);
}
public static void vergleich(float credit, float zp, int time, int darlehen) {
switch (darlehen) {
case 1:
Endfaellig end = new Endfaellig(credit, zp, time);
break;
case 2:
Tilgungsdarlehen til = new Tilgungsdarlehen(credit, zp, time);
break;
default:
break;
}
}
}
public class Endfaellig {
public Endfaellig(float credit, float zp, int time) {
getZins(credit, zp, time);
}
public void getZins(float credit, float zp, int time) {
float zins = credit * zp / 100;
float sumZins = 0;
float tilgung = 0;
for (int i = 1; i <= time; i++) {
System.out.print("Jahr: " + i + "\t");
System.out.print("Restschuld: " + credit + "\t");
System.out.print("Zins: " + zins + "\t");
if (i < time) {
System.out.print("Tilgung: 0 \t\t");
tilgung += 0;
System.out.println("jährliche Rate: " + (zins + tilgung) + "\t");
} else {
System.out.print("Tilgung: " + credit + "\t");
tilgung += credit;
System.out.println("jährliche Rate: " + (zins + tilgung) + "\t");
}
sumZins += zins;
}
System.out.println("\t\t\t\t" + sumZins + "\t\t " + tilgung + "\t\t " + (sumZins + tilgung));
}
}
public class Tilgungsdarlehen {
public Tilgungsdarlehen(float credit, float zp, int time) {
getZins(credit, zp, time);
}
public void getZins(float credit, float zp, int time) {
float zins = credit * zp / 100;
float subZins = zins / time;
float sumZins = 0;
float tilgung = credit / time;
float sumtilgung = 0;
float rest = credit;
for (int i = 1; i <= time; i++) {
sumZins += zins;
sumtilgung += tilgung;
System.out.print("Jahr: " + i + "\t");
System.out.print("Restschuld: " + rest + "\t");
System.out.print("Zins: " + zins + "\t");
System.out.print("Tilgung: " + (tilgung) + "\t");
System.out.println("Gesamt: " + (tilgung + zins) + "\t");
zins -= subZins;
rest -= tilgung;
}
System.out.println("\t\t\t\tsumZins" + sumZins + "\t\t " + sumtilgung + "\t\t " + (sumZins + sumtilgung));
}
}
Lösung von: Helge Meiering ()
def darlehen(creditsum,runtime,zins,art):
if(art == 1):
return Festdarlehen(creditsum,runtime,zins)
if(art == 2):
return Tilgungsdarlehen(creditsum,runtime,zins)
def Festdarlehen(creditsum,runtime,zins):
i = 0
zinssum = 0
while(i != runtime):
zinssum += (creditsum*(float(zins)/100))
i += 1
print('Jahre:\t'+str(runtime)+'\tCredit:\t'+str(creditsum)+'€'+'\tZinssatz:\t'+str(zins)+'%'+'\tSumme:\t'+str(creditsum+zinssum)+'€')
return(creditsum+zinssum)
def Tilgungsdarlehen(creditsum,runtime,zins):
i = 0
zinssum = 0
restcredsum = creditsum
tilgung = creditsum / runtime
while(i != runtime):
zinssum += (restcredsum*(float(zins)/100))
restcredsum = restcredsum-tilgung
i += 1
print('Jahre:\t'+str(runtime)+'\tCredit:\t'+str(creditsum)+'€'+'\tZinssatz:\t'+str(zins)+'%'+'\tSumme:\t'+str(creditsum+zinssum)+'€')
return(creditsum+zinssum)
def main():
darlehen(100000,5,5,1)
darlehen(100000,5,5,2)
if __name__ == '__main__':
main()
Lösung von: Name nicht veröffentlicht
#csum == Kreditsumme
#rtime = Laufzeit
#irate == Zinssatz
#type == Darlehensart
#type == 1 == Festdarlehen
#type == 2 == Tilgungsdarlehen
class darlehen(object):
def __init__(self, csum, rtime, irate, type):
self.csum = csum
self.rtime = rtime
self.irate = irate
self.type = type
def runtime(self):
return self.rtime
def repay(self):
rpay = []
if self.type == 1:
for r in range(self.rtime):
if r+1 == self.rtime:
rpay.append(self.csum)
else:
rpay.append(0)
return rpay
elif self.type == 2:
pay = self.csum/self.rtime
for r in range(self.rtime):
rpay.append(pay)
return rpay
def remdebt(self):
rdebt= []
if self.type == 1:
for r in range(self.rtime):
rdebt.append(self.csum)
return rdebt
elif self.type == 2:
for r in range(self.rtime):
arpay = self.csum-(self.csum/self.rtime)*r
rdebt.append(arpay)
return rdebt
def interest(self):
intrst = []
if self.type == 1:
for r in range(self.rtime):
intrst.append(int(self.csum*(float(self.irate)/100)))
return intrst
elif self.type == 2:
pay = self.csum/self.rtime
for r in range(self.rtime):
arpay = self.csum-(self.csum/self.rtime)*r
itrst = arpay*(float(self.irate)/100)
intrst.append(int(itrst))
return intrst
def tload(self):
tld = []
if self.type == 1:
for r in range(self.rtime):
if (r+1) == self.rtime:
xyz = self.csum + self.interest()[0]
tld.append(xyz)
else:
tld.append(self.interest()[0])
return tld
elif self.type == 2:
for r in range(self.rtime):
xyz = self.csum/self.rtime + self.interest()[r]
tld.append(xyz)
return tld
meins = darlehen(200000,5,6,1)
mein = darlehen(200000,5,6,2)
def darl_darstellung(x):
print "Jahr Tilgung Restschuld Zinsen Gesamtbelastung"
if x.type == 1:
for r in range(x.runtime()):
if r+1 == x.runtime():
print str(r+1) + " "+ str(x.repay()[r]) +" "+ str(x.remdebt()[r]) +" "+str(x.interest()[r]) +" "+str(x.tload()[r])
else:
print str(r+1) + " "+ str(x.repay()[r]) +" "+ str(x.remdebt()[r]) +" "+str(x.interest()[r]) +" "+str(x.tload()[r])
elif x.type == 2:
for r in range(x.runtime()):
print str(r+1) + " "+ str(x.repay()[r]) +" "+ str(x.remdebt()[r]) +" "+str(x.interest()[r]) +" "+str(x.tload()[r])
darl_darstellung(meins)
print "\n"
darl_darstellung(mein)
raw_input()
Lösung von: Kor Py ()
function LoanScheme(sum, life, interest, type) {
this.sum = sum;
this.life = life;
this.interest = interest * .01;
/*=====================*\
| TYPES |
| ===================== |
| 'bullet' : endfällig |
| 'amortize': tilgung |
| 'annuity' : TODO |
\*---------------------*/
this.type = type || undefined;
this.plot = function() {
if (this.type == 'bullet') {
let charge = this.sum * this.interest;
document.write('<h1>Festdarlehen</h1><table>');
document.write(`<tr>
<th>Jahr</th>
<th>Tilgung</th>
<th>Restschuld</th>
<th>Zinsen</th>
<th>Gesamtbelastung</th></tr>
`);
for (let x = 1; x <= life-1; x++)
document.write(`<tr>
<td>${x}</td>
<td>0</td>
<td>${sum.toLocaleString()}</td>
<td>${charge.toLocaleString()}</td>
<td>${charge.toLocaleString()}</td></tr>
`);
document.write(`<tr>
<td>${life}</td>
<td>${sum.toLocaleString()}</td>
<td>${sum.toLocaleString()}</td>
<td>${charge.toLocaleString()}</td>
<td>${(sum + charge).toLocaleString()}</td></tr></table>
`);
}
if (this.type == 'amortize') {
let part = this.sum / this.life,
s = this.sum;
document.write('<h1>Abzahlungsdarlehen</h1><table>');
document.write(`<tr>
<th>Jahr</th>
<th>Tilgung</th>
<th>Restschuld</th>
<th>Zinsen</th>
<th>Gesamtbelastung</th></tr>
<tr><td>1</td>
<td>${part.toLocaleString()}</td>
<td>${s.toLocaleString()}</td>
<td>${(s * this.interest).toLocaleString()}</td>
<td>${(s * this.interest + part).toLocaleString()}</td><tr>
`);
for (let x = 2; x <= this.life; x++) {
s -= part;
i = s * this.interest;
document.write(`<tr>
<td>${x}</td>
<td>${part.toLocaleString()}</td>
<td>${s.toLocaleString()}</td>
<td>${i.toLocaleString()}</td>
<td>${(part + i).toLocaleString()}</td><tr>
`);
}
document.write('</table>')
}
if (this.type == undefined) {
this.type = 'bullet'; this.plot();
this.type = 'amortize'; this.plot();
}
}
}
new LoanScheme(2e5, 5, 6).plot();
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
Verifikation/Checksumme:
Kreditsumme : 200000
Laufzeit: 5 Jahre
Zinssatz: 6 % p.a.
Festdarlehen:
Jahr | Tilgung | Restschuld | Zinsen | Gesamtbelastung |
1 | 0 | 200000 | 12000 | 12000 |
2 | 0 | 200000 | 12000 | 12000 |
3 | 0 | 200000 | 12000 | 12000 |
4 | 0 | 200000 | 12000 | 12000 |
5 | 200000 | 200000 | 12000 | 212000 |
Abzahlungsdarlehen:
Jahr | Tilgung | Restschuld | Zinsen | Gesamtbelastung |
1 | 40000 | 200000 | 12000 | 52000 |
2 | 40000 | 160000 | 9600 | 49600 |
3 | 40000 | 120000 | 7200 | 47200 |
4 | 40000 | 80000 | 4800 | 44800 |
5 | 40000 | 40000 | 2400 | 42400 |
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung: