ist das so richtig???



  • // konsum.cpp: Hauptprojektdatei.
    
           //***********************************************//
           // konsum.cpp :   Berechnung der Rückzahlung     //
           //                eines Konsumentenkredits       //
           //-----------------------------------------------//
           // Projekt :      Praktikumsaufgabe 1            //
           // Autorinnen :   Jacqueline Sternberg und       //
           //                Jennifer Warmulla              //
           // Version :      1.0                            //
           // Datum :        29.10.2010,                    //
           //                letzte Aenderung am : 8.11.2010//
           // Kurzbeschreibung:                             //
           // -----------------                             //
           // Berechnung der Rückzahlung eines Konsumenten- //
           // kredites. Die Berechnung läuft in einer       //
           // Schleife ab und endet bei Return-Eingabe.     //
           // Compiler :     MS Visual Studio - C++         //
           //***********************************************//
    
    //Einfügen benötigter Programmdateien
    //===================================
    #include "stdafx.h"                      
    #include <stdio.h>                 //C-Standard-I/O-Bibliothek
    #include <math.h>                  //C Mathe-Bibliothek  
    #include "vsconio.h"               //Borland spezifische I/O-Bibliothek
    
    int main()
    {
    	//Variablenvereinbarung
    	//=====================
        double Kbedarf, k;              //Var für Kreditbetrag
    	double nz;                      //Var für Nominalzins
    	double zf;                      //Zinsfaktor pro Monat         
    	double rmin, r;                 //Var für monatliche Rate
    	double z;                       //Var für Zinsen
    	double rest;                    //Var für Restschuld
    	double tilg;                    //Var für Tilgung
    	double monat;                   //Var für Ratennr 
    	double zbetrag;                 //Var für Zinsbetrag
    	double zk;                             
    	double effektivz;
    	double i, h, f;                       //Hilfsvariable
    	int x,y, a, b, l;                   //Var für wherex und wherey                       
    	int zeichen;                     //Variable für Entereingabe
    	char dummy [81];
    
    	//Programmanweisungen
    	//===================
    	do
    	  {
    	    clrscr();              //Bildschirm löschen
    	    monat = 0;
    	    printf("Bankhaus Kauf & Rausch -> Berechnung von"
    		       "Konsumentenkrediten        J.S. & J.W.\n"     
    	           "*****************************************"
    		       "**************************************\n\n\n"
                   "Kreditbedarf            [500..10T] : "); scanf("%lf", &Kbedarf);
    	           //Kreditbedarf wird erzeugt
    
            k =((int)Kbedarf+99) / 100*100;         
    	    //Kredtibedarf wird auf nächsten 100er gerundet
    	    if(Kbedarf < 500.00) k = 500.0;         
    	    //Kreditlimit wird eingeschränkt
    	      else if(Kbedarf > 10000) k = 10000.0;
    
    	    printf("Kreditbetrag                [Euro] : %.0lf \n"     
                   "Nominalzinsen                  [%%] : ",k);  scanf("%lf", &nz);
    
    	    if( nz >= 100 ) nz = 100;
    
    	    zf = 1 + (nz/100/12);                  
    	    //dient zur Berechnung der monatlichen Mindestraten                                          
    	    rmin = k * pow(zf,60.0) * ((zf-1)/(pow(zf,60.0)-1)); 
    	    //Die monatliche Mindestrate wird berechnet//
            printf("monatl. Rate   [R >    %5.2lf Euro] : ",rmin); 
    
    	    a = wherex();
    	    b = wherey();         //Cursorposition merken
    
        	scanf("%lf", &r);
    	    gets(dummy);
    
    	    if( r < rmin ) 
    	      { 
    	        r = rmin;                        
    		    gotoxy(a,b);        //Der eingegebene Wert r wird gelöscht und
    		    printf("%.2lf",r);  //durch rmin ersetzt wenn dieser größer r ist
    	      } 
            printf("\n\nRatenNr   Zinsen    Tilgung    Restschulden\n"
    	           "-------------------------------------------\n");
            x = wherex();
    	    y = wherey();          //Cursorposition merken
            rest = k;
            for ( h = 0; h != 6; h = rest + (2*3) )
              { 
    	        z = rest * (30.0/360.0) * (nz/100.0);  //Zinsberechnung
    		    zbetrag = zbetrag + z;                 //Summe der Zinsen erzeugen
    		    if( (r-z) >= rest ) tilg = rest;       //Tilgung = Restbetrag, damit der 
    	 	      else tilg = r - z;                   //Restbetrag nicht negativ wird
    		    rest = rest - tilg;                    //Restbetrag berechnen
    	        if( rest <= 0.01 ) rest = 0;
    	        printf("  %3.0lf  %8.2lf  %8.2lf %12.2lf\n"
    			       , ++monat, z, tilg, rest);     
    			//Ausgabe der monatlichen Zahlungen
    		    if( monat == 1 ) effektivz = z/rest *12 *100;  
    			//Effektivzinsberechnung
    		    if( monat == 12 || monat == 24 || monat == 36 || monat == 48 )
    		      {   
    		        printf("weiter [Return] ->");
    	            gets(dummy);
    		        gotoxy(x, y);
    		      }
    	      }//for-Schleife
            zk = zbetrag/k * 100;                   
    		//Zinsen/Kredit berechnen
            gotoxy(x + 45,y);                        
    		//Cursor in Spalte(x+45) & Zeile y setzen
            printf("Gesamtuebersicht\n");				
            gotoxy(x + 45,y+1);                      
    		//Cursor in Spalte(x+45) & Zeile(y+1) setzen
    	    printf("------------------------------\n");
            gotoxy(x + 45,y+2);                      
    		//Cursor in Spalte(x+45) & Zeile(y+2) setzen
            printf("Kreditbetrag  [Euro] : %5.2lf\n",k);
            gotoxy(x + 45,y+3);                      
    		//Cursor in Spalte(x+45) & Zeile(y+3) setzen
    	    printf("Zinsbetrag    [Euro] : %3.2lf\n",zbetrag);
    	    gotoxy(x + 45,y+4);                     
    		//Cursor in Spalte(x+45) & Zeile(y+4) setzen
            printf("Zinsen/Kredit    [%%] : %3.2lf\n",zk);
       	    gotoxy(x + 45,y+5);                      
    		//Cursor in Spalte(x+45) & Zeile(y+5) setzen
    	    printf("Effektivzins     [%%] : %2.2lf\n",effektivz);
            gotoxy(x + 45,y+6);                      
    		//Cursor in Spalte(x+45) & Zeile(y+6) setzen
    	    printf("Laufzeit    [Monate] : %2.0lf",monat);
    	    gotoxy(x ,y+11);
    	    printf("\nNeue Berechnung [Return] ->");
    	  }
    	while(( zeichen=getchar() ) == '\n');
        gets(dummy);	
        return 0;
    }//main(void)
    


  • lizzty schrieb:

    #include "stdafx.h"
    

    Was ist denn das?



  • Und wenn du auch noch sagst, was das Problem mit deinem Code ist, könnte man vielleicht eine Antwort geben. Gehe bitte davon aus, dass hier nicht jeder deinen Code durch den Compiler schickt.



  • lizzty schrieb:

    // Compiler :     MS Visual Studio - C++         //
    

    Warum ist das eigentlich im C-Forum?



  • mngbd schrieb:

    lizzty schrieb:

    // Compiler :     MS Visual Studio - C++         //
    

    Warum ist das eigentlich im C-Forum?

    Weil sie ausschließlich C verwendet?



  • HighLigerBiMBam schrieb:

    mngbd schrieb:

    lizzty schrieb:

    // Compiler :     MS Visual Studio - C++         //
    

    Warum ist das eigentlich im C-Forum?

    Weil sie ausschließlich C verwendet?

    naja aber gespickt mit windows spezifischen sachen ists schon.. 🙄



  • Nachdem wir im Forum schon einige Threads hatten, finde ich es zweifelhaft, dass double für die Berechnung von Geldbeträgen verwendet wird. Wenn die ersten Kunden wegen falsch berechneten Beträgen anklopfen wird es interessant.



  • HighLigerBiMBam schrieb:

    Nachdem wir im Forum schon einige Threads hatten, finde ich es zweifelhaft, dass double für die Berechnung von Geldbeträgen verwendet wird. Wenn die ersten Kunden wegen falsch berechneten Beträgen anklopfen wird es interessant.

    daran hab ich grad gar nicht gedacht 😞



  • Wenn es um Anwendungen geht die mit heiklen Daten rechnen, sollte das nicht passieren:

    char dummy [81];
    gets(dummy);

    Ich weiss nicht was passiert wenn man mehr als 80 char eingibt, aber ich kanns mir vorstellen, dass geübte Finger das Resultat verändern können...


Log in to reply