C :: Aufgabe #190

1 Lösung Lösung öffentlich

Die beste Darlehensart berechnen

Anfänger - C von Gelöschte Person - 04.06.2018 um 17:06 Uhr
Schreibe ein Programm welches folgende Parameter übergeben bekommt:
- Nominalzins p.a.
- Laufzeit (Jahre)
- Darlehen (€)

Berechne dann anhand dieser Parameter welche der drei folgenden Darlehensarten am besten für den Kreditnehmer ist:
- Fälligkeitsdarlehen
- Ratendarlehen
- Annuitätendarlehen

... und gib die Ergebnisse aus, auch inwiefern sie sich untereinander unterscheiden - jeder Cent zählt! ;)

Lösungen:

vote_ok
von kathleenw (3600 Punkte) - 17.07.2020 um 09:47 Uhr
Quellcode ausblenden C-Code
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(void)
{
    float nominalzins, darlehen, q, minimum;
    int jahre, i, stelle_minimum;
    float restschuld[100], zinsen[100], tilgung[100], rate[100],gesamtkosten[3];
    
    printf("Welcher Nominalzins? ");
    if (scanf("%f", &nominalzins)!=1) {
        printf("Bitte geben sie eine Zahl ein.");
        return EXIT_FAILURE;
    }
    
    printf("Welches Darlehen möchten sie? ");
    if (scanf("%f", &darlehen)!=1) {
        printf("Bitte geben sie eine Zahl ein.");
        return EXIT_FAILURE;
    }
    
    printf("Wieviel Jahre wollen sie es abbezahlen?");
    if (scanf("%d", &jahre)!=1) {
        printf("Bitte geben sie eine Zahl ein.");
        return EXIT_FAILURE;
    }
   
    
    //Tilgungsdarlehen
    for (i=0;i<jahre;i++) {
        tilgung[i] = darlehen / jahre;
    }
    
    restschuld[0] = darlehen;
    zinsen[0] = restschuld[0] * (nominalzins/100);
    rate[0] = zinsen[0] + tilgung[0];
    gesamtkosten[0] = rate[0];
    
    for (i=1;i<jahre;i++) {
        restschuld[i] = restschuld[i-1] - tilgung[i-1];
        zinsen[i] = restschuld[i] * (nominalzins/100);
        rate[i] = tilgung[i] + zinsen [i];
        gesamtkosten[0] = gesamtkosten[0] + rate[i];
    }
    
    printf("\n***Tilgungsdarlehen***\n\n");
    
    for (i=0;i<jahre;i++) {
        printf("%3d %12.2f %12.2f %12.2f %12.2f \n", i+1, restschuld[i], zinsen[i], tilgung[i], rate[i]);
    }
    
    printf("\nDie Gesamtschuld beträgt %.2f Euro.\n\n", gesamtkosten[0]);
    
    //Annuitätendarlehen
    q=1+(nominalzins/100);
    for (i=0;i<jahre;i++) {
        rate[i] = darlehen * ((pow(q,jahre) * (nominalzins/100))/(pow(q,jahre)-1));
    }
    
    restschuld[0] = darlehen;
    zinsen[0] = restschuld[0] * (nominalzins/100);
    tilgung[0] = rate[0] - zinsen[0];
    gesamtkosten[1] = rate[0];
        
    for (i=1;i<jahre;i++) {
        restschuld[i] = restschuld[i-1] - tilgung[i-1];
        zinsen[i] = restschuld[i] * (nominalzins/100);
        tilgung[i] = rate[i] - zinsen[i];
        gesamtkosten[1] = gesamtkosten[1] + rate[i];
    }
    
    printf("\n***Annuitätendarlehen***\n\n");
    
    for (i=0;i<jahre;i++) {
        printf("%3d %12.2f %12.2f %12.2f %12.2f \n", i+1, restschuld[i], zinsen[i], tilgung[i], rate[i]);
    }
    
    printf("\nDie Gesamtschuld beträgt %.2f Euro.\n\n", gesamtkosten[1]);
    
    //Fälligkeitsdarlehen
    
    tilgung[jahre-1] = darlehen;
    rate[jahre - 1] = darlehen + darlehen * (nominalzins/100);
    gesamtkosten[2] = 0;
    for (i=0;i<jahre;i++) {
        restschuld[i] = darlehen;
        zinsen[i] = darlehen * (nominalzins/100);
        if (i!=(jahre-1)) {
            tilgung[i] = 0;
            rate[i] = tilgung[i] + zinsen[i];
        }
        gesamtkosten[2] = gesamtkosten[2] + rate[i];
        
    }
    
    printf("\n***Fälligkeitsdarlehen***\n\n");
    
    for (i=0;i<jahre;i++) {
        printf("%3d %12.2f %12.2f %12.2f %12.2f \n", i+1, restschuld[i], zinsen[i], tilgung[i], rate[i]);
    }
    
    printf("\nDie Gesamtschuld beträgt %.2f Euro.\n\n\n", gesamtkosten[2]);
    
    //Auswertung
    
    minimum = gesamtkosten[0];
    stelle_minimum = 0;
    for (i=1;i<3;i++){
        if (minimum > gesamtkosten[i]){
            minimum = gesamtkosten[i];
            stelle_minimum = i;
        }
    }
    
    switch(stelle_minimum)
    {
        case 0:printf("Das Tilgungsdarlehen wäre für sie das Beste. Die Gesamtschuld beträgt hier %.2f Euro.\n",minimum);break;
        case 1:printf("Das Annuitätendarlehen wäre für sie das Beste. Die Gesamtschuld beträgt hier %.2f Euro.\n",minimum);break;
        case 2:printf("Das Fälligkeitsdarlehen wäre für sie das Beste. Die Gesamtschuld beträgt hier %.2f Euro.\n",minimum);break;
        default: printf("Es ist ein Fehler aufgetreten.\n");
    }
    
    return EXIT_SUCCESS;
}