Zinseszinsen-Programm bei C++...PROBLEM!!



  • Hallo allerseits...
    wie ihr seht bin ich neu hier...nicht nur hier, sondern auch allgemein im Bereich der C++-Programmierung. Ich habe schon die Suche für die Zinseszinsenberechnung ausgeführt, aber leider nix gefunden was mir weiterhilft. Aber irgendwie stimmt hier was hinten und vorne nicht. Wenn ich 10 Jahre Laufzeit eingebe erechnet er elf, die Zinsen und Gesamtzinsen stimmen auch hinten und vorne nichtt....weiss jemand woran es liegt, irgendwie kann ich nix erkennen 😕
    Bin für jede Hilfe MEGA-DANKBAR

    #include <stdio.h>
    #include <conio.h>

    main()

    {
    float Zinsen, Betrag, Zinssatz, Jahreszins, Jahresbetrag, Jahresendbetrag,
    Guthaben, Gesamtzinsen;

    int Laufzeit, j, i;

    Zinsen=0;
    Betrag=0;
    Zinssatz=0;
    Jahreszins=0;
    Jahresbetrag=0;
    Jahresendbetrag=0;
    Guthaben=0;
    Laufzeit=0;
    Gesamtzinsen=0;
    i=0;
    j=0;

    printf("Bitte geben Sie den monatlichen Einzahlungsbetrag ein:");
    scanf("%f",&Betrag);
    printf("Bitte geben Sie den Zinssatz ein:");
    scanf("%f",&Zinssatz);
    printf("Bitte geben Sie die Laufzeit in Jahren ein:");
    scanf("%i",&Laufzeit);

    for (i=1; i<=Laufzeit;i++);
    {
    for(j=12;j>=1;j--);
    {
    Guthaben=Guthaben+Betrag;
    Zinsen=Betrag/100*Zinssatz;
    Jahreszins=Jahreszins+Zinsen;

    }
    Guthaben=Guthaben+Jahreszins;
    Jahresbetrag=i*12*Betrag;
    Gesamtzinsen=Jahreszins+Zinsen;
    printf("Gesamt-Einzahlung nach %i Jahr(en):%.2f\n",i,Jahresbetrag);
    printf("Guthaben nach %i Jahr(en):%.2f\n",i,Guthaben);
    printf("Zinsen fuer %i Jahr(en):%.2f\n",i,Jahreszins);
    printf("Gesamtzinsen fuer %i Jahr(en):%.2f\n",i,Gesamtzinsen);
    }
    system("PAUSE");
    return 0;
    }



  • Ich kann dir zwar nicht auf deine konkrete Frage antworten ( selbst zu wenig peilung 🙂 ) aber ein allgemeiner tip:

    variablen werden erst initialisiert, wenn sie gebraucht werden ( der übersicht halber )



  • ja und das ist C also in die passende area, und bitte die

    marken vor und nach dem quellcode verwenden



  • und nochetwas:

    nimm doch statt

    system("pause");
    

    einfach

    cin.get(); cin.get();
    

    😉



  • Hmm, wenns so is, kann das mal jemand umverschieben?
    Leider haben eure Tips noch nicht zur Lösung beigetragen....ich dreh hier bald noch durch 😕 😞
    Und wo besteht der Unterschied wenn ich cin.get(); cin.get(); eingebe anstatt das system("pause");???



  • Zinsen=Betrag/100*Zinssatz; // operandenordnung undefiniert
    Zinsen=Betrag / (100*Zinssatz); // mögliche auslegung
    Zinsen=(Betrag / 100) *Zinssatz; // noch ne mögliche auslegung
    

    klammer unbedingt solche ausdrücke. der compiler legt es im schlimmsten fall genau so aus, wie du es nicht haben willst ^^

    außerdem kann man den zinseszins auch direkt berechnen: http://de.wikipedia.org/wiki/Zinseszins



  • das

    system("pause");
    

    wird von der cmd.exe aus ausgeführt oderso, ist auf jeden fall langsamer. und es ist kein c/c++.

    cin.get();
    

    dagegen ist von c/c++ -> schneller ausgeführt.
    doppelt musst dus nur machen, weil des programm bei einem mal trotzdem gleich ausgeht.
    noch ein vorteil: du kannst den text selbst bestimmen und musst nich eine windoof standardmeldung ala "Beliebige Taste drücken..." ertragen.
    nachteil: es muss enter gedrückt werden ( glaub ich )



  • klar ist system("pause") c++. naja, eigentlich c. das problem ist allerdings, dass der ausgeführte befehl nicht plattformunabhängig ist.



  • Also, dank dem Beitrag von Thordk bekomm ich nun zwar ein anderes Ergebnis...aber wenn das realistisch sein soll das ich nach 10 Jahren bei monatlicher Einzahlung von 10 Euro und 10 Prozent Zinsen dann nur 0,01 € Zinsen rausbekomm....Nunja 🙂 ICH DREH DURCH -.-



  • Mach mal die Semikolons hinter deinen for-schleifen weg. Sonst wird ja der Code darunter gar nicht in der Schleife ausgeführt.



  • Schonmal vielen Dank für die super Hilfe!!!
    Die Einzahlungen berechnet er nun richtig, nur die Zinsen rechnet er leider irgendwie immer noch nicht korrekt aus 😞



  • du rechnest die ganze zeit mit dem ursprungsbetrag. du musst die zinsen, als das vermehrte kapital, in der rechnung verwenden.



  • Öhm machen wir erstmal C++ daraus:

    #include <iostream>
    
    template<typename t> t read_type(std::string const& prompt) 
    {
    	t result;
    	std::istringstream isstr;
    	std::string line;
    
    	do {
    		std::cout << prompt << std::flush;
    		std::getline(std::cin, line);
    
    		isstr.clear();
    		isstr.str(line);
    		isstr >> result;
    	} while(!isstr);
    	return result;
    }
    
    int main()
    {
    	std::cout << "Zinseszinsen V0.1 BETA" << std::endl;
    	double month_deposit = read_type<double>("montl. Einzahlung: ");
    	double interest_rate = read_type<double>("Zinssatz: ");
    	unsigned short duration = read_type<unsigned short>("Laufzeit (in Jahren): ");
    	std::cout << "Gesammteinzahlung pro Jahr: " << 12 * month_deposit << std::endl;
    	std::cout << "Guthaben nach " << duration << " Jahren (excl. Zinsen): " << (12 * month_deposit) * duration << std::endl;
    }
    

    🙂 soo ... dann mal zu deinem Problem ... was soll diese monatliche Einzahlung sein? Normal berechnet man eine Zinseszins einfach aus, in dem man hingeht und nur nach den Anzahl der Jahren und Zinshöhe sowie Ausgangskapital guckt.


Anmelden zum Antworten