Zinsrechnung und Schleife



  • Hallo,

    wie berechne ich die erste Zinsrate, wenn ich folgende Werte habe?

    Kreditbetrag : 10000 Euro
    Nominalzinsen: 0,1 %
    Laufzeit: 1 Jahr
    Raten/Jahr: 12
    Rate: 879.16

    Also konkret muss ich mit C eine Berechnung des Ratenkredits machen.
    Desweiteren soll ich die Rechnungen in einer Schlaufe laufen lassen. Pro Durchlauf wird eine Kreditberechnung durchgeführt. Wenn ein Kreditbetrag von 0€ eingegeben wird, ist die Schleife und somit das Programm zu beenden.

    Also meineProg. muss nachher Zinsen, Tilgung und Restschuld mit den gegebenen Werten in einer Tabelle ausrechnen.

    Meine Schleife sieht bisher wie folgt aus:

    while (bet>=0)
    {
    printf("%d",&i);

    Zinsen=
    Tilg=Rate-Zinsen
    Rest=btr-Tilg

    printf(" | %2d |%9.2f | %9.2f | %9.2f %% | \n", i, Zinsen, Tilg , Rest);

    btr=Rest
    i+=i
    }

    Anhang:
    btr -> Betrag von 10000 euro
    tilg -> Tilgung

    Und mir fehlt die Formel für die Zinsen... Kann mir die jmd sagen? Also bei der ersten Rate soll 83.33 raus kommen. Wie komm ich auf diesen Betrag??

    Und ist der Rest soweit richtig??



  • Ich würde ja "Zinsen=Betrag*Nominalzins/100" verwenden 😉



  • das hatte ich auch versucht, aber ich komme nicht auf 83,33. Sondern auf 10 😕



  • Woher hast du denn diese Aussage (bzw. wie hast du berechnet, daß "83.33 raus kommen" müsste/sollte)?



  • http://www.siteupload.de/p554204-kreditapdf.html

    da ist meine Aufgabe. Und der Ausgabe-Bildschirm wurde uns mit rangehängt, damit wir sehen, wie es nachher aussehen soll...

    Und da steht 83,33



  • Da stehen doch auch alle nötigen Formeln in der Aufgabe - inklusive der Zinsrate (der Nominalzins gilt pro Jahr, also mußt du ihn noch durch die Ratenzahl dividieren - "Zinsen=Betrag*Nominalzins/100/Ratenzahl;").



  • 😮 *schäm* das hatte ich total übersehen...

    Ist meine Schleife soweit den richtig? *lieb frag*



  • Soweit ich das überblicke, sieht das gut aus. Allerdings fehlt noch die "neue Seite"-Erkennung, die in der Aufgabe gefordert ist (nach jeweils 12 Raten die Schleife unterbrechen und auf Eingabe warten).



  • ja, da war ich mir noch nicht so sicher wie das geht...

    wollte in die while schleife noch ne if schleife machen...

    und dann irgendwie:

    if (i==12) {break?? (irgendwas das die ausgabe unterbrincht?)

    clrscr;
    }

    Danke für deine Hilfe!!



  • break ist da wohl etwas zu hart - du willst die Schleife ja nicht abbrechen, sondern nur kurz anhalten. Da reicht es aus, mit getch() auf eine Eingabe des Nutzers zu warten und anschließend den Seitenkopf neu zu schreiben.



  • irgendwie funktioniert das nicht 😞

    ich finde meinen Fehler nicht 😞

    *weiter suchen tu*



  • wie wärs, wenn du mal die fehlermeldung postest, die du erhältst, oder kommen einfach falsche werte dabei raus?



  • ich bekomm keine fehlermeldung...
    das programm endet einfach, sobald er die Rate ausgerechnet hat...



  • *mal den Code überflogen hat* Du müsstest nach dem getch() und dem Bildschirm löschen (btw, clrscr; ist kein Funktionsaufruf, sondern einfach nur sinnlos) den Tabellenkopf neu ausgeben.

    Eine andere Möglichkeit wäre es, eine doppelte Schleife zu verwenden:

    int num=0;
    while(betr>=0)
    {
      //Tabellenkopf schreiben
      for(int i=0;i<12 && betr>=0;++i,++num)
      {
        //Kreditdaten aktualisieren und ausgeben
      }
      printf("Bitte return drücken!");
      getch();
    }
    

    PS: Du kannst deine Codes auch direkt in die Beiträge reinkopieren - da steigen deine Chancen, daß sie auch gelesen werden 😉



  • würd ich ja gerne, aber wie get das? über die taste c# ??



  • //*************************************************************************** 
    // dateiname.erw : Berechnung der Rückzahlung eines Ratenkredits
    // Projekt       : Praktikumsaufgabe 1
    // Autor/in      : Swantje
    // Version       : 1.0
    // Datum         : 13.11.2007     letzte Aenderung am : tt.mm.jjjj
    // Beschreibung  : maximal 5 Zeilen
    // Compiler      : Borland C++ V 5.02
    //***************************************************************************
    
    #include <stdio.h>    /* Ein-/Ausgabe der c-Bibliothek laden*/
    #include <conio.h>    /* Borland Bildschirm-Bibliothek laden*/
    #include <math.h>
    
    int main (void)       /*Programmstart*/
    {
    
    /* ---------------------- */
    /* Variablen Vereinbarung */
    /* ---------------------- */
    
    double bet;            /*Kreditbetrag*/
    double zin;            /*Nominalzinsen in % */
    double laz;            /*Laufzeit*/
    double x;
    double n;              /*Anzahl der Raten*/
    double zr;             /*Zinsrate pro Zahlung*/
    double rat;            /*Rate*/
    double EZ;             /*Effektivzins*/
    double btr;
    double ztr;
    int    ranz;
    double Zinsen;
    double Tilg;
    double Rest;
    int i=1;
    int num=0;
    
    char dummy[81];   /* zum Anhalten des Programms*/
    
    /* -------------------------------- */
    /* Programmteile Eingabebildschirm  */
    /* -------------------------------- */
    
              /*Bildschirm löschen */
    
    printf ("Bankhaus Nepp & Soehne -> Berechnung von Ratenkrediten       S. Barre, S. Meinke\n");
    printf ("****************************************************** \n");  /* Unterstrichen, Leerzeile ausgeben*/
    printf ("\n\n");                                                       /* Leerzeile*/
    printf ("Kreditbetrag  [T.EURO] : ");           /*Eingabeaufforderung*/
    scanf  ("%lf", &bet);                           /*positiver ganzzahliger Wert wird von Tastatur eingelesen*/
    if     (bet==0) {return 0;}                     /*Anweisung: Stop des Programms bei Wert 0*/
    printf ("Nominalzinsen [%]      : ");           /*Eingabeaufforderung*/
    scanf  (" %lf",&zin);                           /*Zinsen werden von Tastatur eingelesen*/
    printf ("Laufzeit      [J.MM]   : ");           /*EIngabeaufforderung*/
    scanf  (" %lf",&x);                             /*Laufzeit wird von Tastatur eingelsen*/
    printf ("Raten/Jahr             : ");           /*Eingabeaufforderung*/
    scanf  (" %lf",&n);                             /*Rate wird von Tastatur eingelesen*/
    if (n<1) {                                      /*Anweisung: Ratenzahlung auf 1-12 begrenzen*/
                n=1;
                  }
            else if (n>12) {
                               n=12;
                                }
    
    gets (dummy);
    
    /*------------------------------------*/
    /*   Programmteil Ausgabebildschirm   */
    /*------------------------------------*/
    
    btr=bet*1000;
    ztr=zin/100;
    laz=(int)x+(x-(int)x)*100/12;
    
    zr = zin/n/100;
    rat = (btr*zr)/(1-(1/pow(1+zr,n*laz)));
    
    printf("Rate          [EURO]   : %.2f", rat);
    
    printf ("\n\n");
    printf ("\n\n");
    
    gets (dummy);
    
    /*-----------------------------------*/
    /*  Tabellenkopf / Wertzuweisung     */
    /*-----------------------------------*/
    
    printf("RatenNr    Zinsen    Tilgung    Restschuld \n");
    printf("------------------------------------------ \n");
    
    while (bet>=0)
    {
    printf("%d",&i);
    
    Zinsen=btr*zin/100/n;
    Tilg=rat-Zinsen;
    Rest=btr-Tilg;
    
    printf(" |  %2d  |%9.2f  | %9.2f   |  %9.2f %%    | \n", i, Zinsen, Tilg , Rest);
    
    btr=Rest;
    i+=i;
    
    while(betr>=0)
    {
    printf("RatenNr    Zinsen    Tilgung    Restschuld \n");
    printf("------------------------------------------ \n");
    
      for(int i=0;i<12 && betr>=0;++i,++num)
      {
        //Kreditdaten aktualisieren und ausgeben
      }
      printf("Press return ->");
      getch();
    }
    }
    
    gets (dummy);
    
    {
    return 0;
    
    }}
    


  • Swantje schrieb:

    würd ich ja gerne, aber wie get das? über die taste c# ??

    Fast - die Taste "C/C++" ist für C-Codes 😉

    Zu deinem Programm: Die Berechnungen "Zinsen=..." und die dazugehörige Ausgabe gehören in die innerste Schleife - an der Stelle bringen sie nicht viel. (und dadurch, daß im Inneren der Schleife nicht viel passiert, hast du eine Endlosschleife, die nur ständig auf Eingaben wartet)



  • Die Berechnungen "Zinsen=..." und die dazugehörige Ausgabe gehören in die innerste Schleife

    irgendwie bin ich gerade erritiert. Also in die for schleife oder wie? Oder was is eine innere Schleife? *lieb frag*

    Danke für deine gedult mit mir!!



  • Swantje schrieb:

    Die Berechnungen "Zinsen=..." und die dazugehörige Ausgabe gehören in die innerste Schleife

    irgendwie bin ich gerade erritiert. Also in die for schleife oder wie?

    Ja genau - dort wo der Kommentar "//Kreditdaten aktualisieren und ausgeben" steht.

    Oder was is eine innere Schleife? *lieb frag*

    Eine "innere Schleife" ist eine Schleife, die im Inneren einer anderen Schleife liegt (in diesem Fall die "for(i=0...)" im Inneren der "while(betr>=0)").



  • Eine "innere Schleife" ist eine Schleife, die im Inneren einer anderen Schleife liegt (in diesem Fall die "for(i=0...)" im Inneren der "while(betr>=0)").

    Danke

    Also ich hab das jetzt wie folgt hier bei mir stehen:

    /*------------------------------------*/
    /*   Programmteil Ausgabebildschirm   */
    /*------------------------------------*/
    
    btr=bet*1000;
    ztr=zin/100;
    laz=(int)x+(x-(int)x)*100/12;
    
    zr = zin/n/100;
    rat = (btr*zr)/(1-(1/pow(1+zr,n*laz)));
    
    printf("Rate          [EURO]   : %.2f", rat);
    
    printf ("\n\n");
    printf ("\n\n");
    
    gets (dummy);
    
    /*-----------------------------------*/
    /*  Tabellenkopf / Wertzuweisung     */
    /*-----------------------------------*/
    
    printf("RatenNr    Zinsen    Tilgung    Restschuld \n");
    printf("------------------------------------------ \n");
    
    while (bet>=0)
    {
    printf("%d",&i);
    
    while(betr>=0)
    {
    printf("RatenNr    Zinsen    Tilgung    Restschuld \n");
    printf("------------------------------------------ \n");
    
      for(int i=0;i<12 && betr>=0;++i,++num)
      {
         Zinsen=btr*zin/100/n;
         Tilg=rat-Zinsen;
         Rest=btr-Tilg;
    
    printf(" |  %2d  |%9.2f  | %9.2f   |  %9.2f %%    | \n", i, Zinsen, Tilg ,Rest); 
    
    btr=Rest;
    i+=i;
      }
      printf("Press return ->");
      getch();
    }
    }
    
    gets (dummy);
    
    {
    return 0;
    

    aber irgendwie rechnet mein Programm nichts... 😞


Anmelden zum Antworten