Een annuïteit is een vast bedrag dat periodiek betaald of ontvangen wordt gedurende een bepaalde periode. Letterlijk genomen is een annuïteit een jaarlijks te betalen bedrag. Het is afgeleid van het Latijnse woord “annus” (jaar). Ditzelfde principe kan natuurlijk ook worden toegepast op andere tijdsintervallen. Indien het maandelijks te betalen bedrag moet worden berekend, wordt dit een mensualiteit genoemd. In deze oefening zul je een programma schrijven dat een aflossingstabel opstelt, zodat de gebruiker snel kan zien hoeveel hij per jaar moet betalen om zijn lening af te betalen.
Het bedrag dat per jaar moet worden betaald, kan berekend worden met onderstaande formule. In deze formule staat \(A\) voor het jaarlijks te betalen bedrag (de annuïteit), \(T\) voor het totaal geleende bedrag, \(I\) voor de procentuele rentevoet (voorgesteld als een getal tussen \(0\) en \(1\), bijvoorbeeld \(0.05\) komt overeen met \(5\%\)) en \(P\) voor de periode waarover geleend wordt (bijvoorbeeld: 5 jaar).
\[\text{A} = \frac{T * I}{1 - (1 + I)^{-P}}\]Elk jaar wordt de annuïteit afgetrokken van het nog te betalen bedrag. Het rentedeel en de kapitaalaflossing kunnen berekend worden als volgt. Hier stelt \(I\) het rentedeel voor, \(K\) de kapitaalaflossing en \(A\) de annuïteit.
\[Rentedeel = Resterend * Rentevoet\] \[Kapitaalaflossing = Annuiteit - Rentedeel\]Strikt genomen is het niet de bedoeling dat double
of float
getallen worden gebruikt voor financiële berekeningen. Dit kan namelijk afrondingsfouten veroorzaken (bijvoorbeeld: \(5.0 - 1.5\) kan gelijk zijn aan \(3.499999998\)). Dit zou ervoor zorgen dat de afrondingstabel niet meer klopt, waardoor we er in deze opgave voor gekozen hebben om bij elke berekening zowel het rentedeel als de kapitaalaflossing, maar NIET het resterende bedrag, telkens af te ronden. Bij Tips staat beschreven hoe je dit doet.
Tijdens deze oefening is het ook de bedoeling dat je alle invoer van de gebruiker controleert. Het mag bijvoorbeeld niet mogelijk zijn om een aflossingstabel op te stellen met een negatieve rentevoet. Wanneer je ongeldige invoer van de gebruiker detecteert, moet het programma een foutboodschap tonen en stoppen.
De mogelijke foutboodschappen zijn de volgende:
Fout: Je kan geen negatief bedrag lenen.
Fout: Je moet tenminste op 1 jaar lenen.
Fout: De rentevoet moet tussen 0 en 1 liggen.
|
) alsook op het einde van de rij moet wel aanwezig zijn. Als de getallen juist zijn, zal je oplossing juistgerekend worden.De tekst in het rood stelt invoer van de gebruiker voor (deze wordt niet uitgeprint door je programma).
Wat is het geleende bedrag? 50000 Op hoeveel jaar werd er geleend? 5 Hoeveel bedraagt de rente? 0,05 Elk jaar moet er € 11548.739906413399 worden betaald. +------+-----------+-------------------+-----------+ | Jaar | Rentedeel | Kapitaalaflossing | Resterend | +------+-----------+-------------------+-----------+ | 1 | € 2500.0 | € 9049.0 | € 40951.0 | | 2 | € 2048.0 | € 9501.0 | € 31450.0 | | 3 | € 1573.0 | € 9976.0 | € 21474.0 | | 4 | € 1074.0 | € 10475.0 | € 10999.0 | | 5 | € 550.0 | € 10999.0 | € 0.0 |
Math.round(a)
. Deze functie rond het getal \(a\) af naar een integer, zoals gevraagd in deze opgave.Math.pow(a, b)
. Deze functie returnt de
uitkomst van \(a^b\).System.exit(0)
. Dodona vereist dat je deze functie oproept met 0
als argument.Hierbij nog wat uitleg over de Dodona-testen voor deze oefening: