Brauche hilfe bei Zinsrechner Programm



  • Na du scheinst ja noch garkeine Ahnung von irgendwas zu haben.

    Du brauchst natürlich vorzugsweise einen Button um die Berechnungsfunktion zu starten. Das machst du einfach dadurch das du einen Button in deiner Form plazierst und einen doppelkliick darauf ausführst. Im Quelltext wird automatisch die Funktion erstellt die bei einem KLick auf den Button ausgeführt wird.

    dann codest du dort die Rechenoperation rein.

    Auslesen aus den Editfeldern kannst du mit z.B.

    int wert1 = Edit1->Text;

    Das könnte dann z.B. so aussehen

    void __Fastcall TForm1::Button1Click (..blahblah..)
    {
    //hier variablen intialisiereung
    
    //hier die rechnung
    
    //hier die ausgabe (z.B) in Labels
    }
    

    Der Grund wieso dir hier wahrscheinlich keiner einen Fertigen Code liefern wird liegt einfach darin dass es sich bei schleifen etc. um das Alphabet des Programmierens handelt und du, wenn dir jemand hier die Lösung postest, 2 Minuten später eine neue Frage hast etc.

    "Hello World"-Tutorials sind genau was du brauchst.
    Wenn du problem hast das mit dem cBuilder umzusetzen benutze erstmal die Borland Hilfe im Kompiler indem du einen Begriff eingibst der damit zu tun hat. z.B. "TButton" oder so. Dort wirst du Beispiele finden wie Abläufe funktionieren und dabei auch kleiner Sachen nebenher lernen.



  • Da mir auch hier Niemand weiterhelfen möchte,
    verliere ich langsam die Lust an der ganzen Sache.

    Ich habe jetzt schon mehrmals die geposteten Tutorials durchgelesen,
    schaffe es aber nicht, diese mit meinem Problem in verbindung zu
    bringen.

    Ich habe heute schon über 100 mal mein Programm versucht
    zu starten, bekomme aber immer wieder Fehlermeldungen
    bezüglich der "for" Schleife.

    z.b. dieser "cout<<" Befehl bringt den Compieler immer zum Absturz.

    Aber anscheinend ist die ganze Sache wohl nix für mich,
    nach den Ferien werde ich den Kurs wohl abbrechen.

    Trotzdem nochmal allen Leuten
    vielen Dank für die Hilfe!!!



  • Dann zeige doch einmal dein Programm, was du genau versucht hast und was genau nicht funktioniert. Solange wir uns nur auf unsere Kristallkugeln verlassen müssen, können wir dir auch nicht helfen.

    Ansonsten: Was verstehst DU unter einer for-Schleife? Und welchen Nutzen könnte sie in diesem Fall haben? Und nochmal akaris Frage: Wie würdest du die Aufgabe per Hand, also mit Stift und Papier lösen? Was sollte das Programm demzufolge machen?

    Moonboon schrieb:

    Aber anscheinend ist die ganze Sache wohl nix für mich, nach den Ferien werde ich den Kurs wohl abbrechen.

    Das hängt von deinem Interesse ab und davon wieviel Arbeit du investieren willst. Auf jedem Gebiet gibt es Probleme, die es zu bewältigen gilt. Und gleich am Anfang aufzugeben ist in meinen Augen nicht der richtige Weg dazu.



  • na wir wollen ja auch nicht das du die Lust verlierst. Um dir einen Motivationsschub zu geben probier mal das aus;

    -Button ins Form bauen
    -Memo ins Form bauen
    -Doppelklick auf den Button
    -den folgenden Code in die Button funktion einfügen.

    for(int i=1;i<10;i++)
    {
    Memo1->Lines->Add(i);
    }
    

    so nebenbei:
    die cout und cin geschichte sind ein und ausgaben über das standart ein-/ausgabegerät, dass is nur für consoleanwendungen relevant. Im dos fenster passiert praktisch nichts anderes. Cin für Tastatureingabe, cout für Bildschirmausgabe.

    moonboon schrieb:

    Da mir auch hier Niemand weiterhelfen möchte,
    verliere ich langsam die Lust an der ganzen Sache.

    Es ist noch kein Meister vom Himmel gefallen!!!
    Anfangs ist es mühsam Hilfe zu bekommen, irgendwo hab ich kürzlich gelesen

    irgendwer schrieb:

    "Dieses Forum ist eher als Hilfe zur Selbsthilfe anzusehen..."

    Wir versuchen dir ja alle zu helfen, dazu gehört natürlich auch dich ein bisschen mit der Nase auf die Probleme zu stoßen.



  • @GreyHound,
    vielen Dank für dein Verständnis und deine Hilfe!!!
    Ich habe mir das jetzt folgendermaßen überlegt:

    double dStartkapital;
    double dZinssatz;
    double dLaufzeit;
    double dErgebnis;
    dStartkapital=edtWert1->Text.ToDouble();
    dZinssatz=edtWert2->Text.ToDouble();
    dLaufzeit=edtWert3->Text.ToDouble();
    for(int dErgebnis=dStartkapital*(1+dZinssatz/100);dErgebnis*dLaufzeit;)
    {
    Memo1->Lines->Add(dErgebnis);
    }

    Ich habe auch mehrere möglichkeiten in der "for" Schleife ausprobiert,
    aber leider kommt immer nur eine Endlosschleife zustande.
    Gib mir doch bitte noch ein Tip.



  • haha, du bist zu schnucklig

    Na wenn du wirklich schon den ganzen Tag dranhockst hättest ja ma kurz schaun können wie for-schleifen funktionieren. Der Link der zuvor gepostet wurde ist doch Idiotensicher 😉
    http://www.cpp-tutor.de/cpp/le05/le05_03.htm
    Ausserdem solltest das auch durch das Beispiel geschnallt haben.

    for(i=1;i<2;i++) //i++ heisst "erhöhe i um 1 also i=i+1"
    {
    //code
    }
    

    is das gleiche wie

    int i=1;
    while(i<3)
    {
    //code
    
    i++; //i++ bedeuted i=i+1;
    }
    

    Das hättest du doch mal begreifen können nachdem mein Voriges Beispiel

    for(i=1;i<10;i++)
    

    die schleife eben sollange durchlaufen hat bis die bedingung i<10 nicht mehr zutrifft.

    In deinem Fall wird dir ja langsam klar sein das du eben dein Startkapital jährlich mit dem Zinssatz multiplizieren musst. Also die schleife sooft durchlaufen werden muss wie deine Laufzeit ist.
    Übrigends, pass auf mit double und int, Interger sind Ganzzahlen.

    Schau dir aber echt nochmal so Anfänger tutorials an, um die nötigsten Grundlagen zu können brauchst du vielleicht 2-3 Stunden.



  • Also so weit bin ich jetzt schon gekommen:

    double dStartkapital;
    double dZinssatz;
    double dLaufzeit;
    double dErgebnis;
    dStartkapital=edtWert1->Text.ToDouble();
    dZinssatz=edtWert2->Text.ToDouble();
    dLaufzeit=edtWert3->Text.ToDouble();
    dErgebnis=dStartkapital*(1+dZinssatz/100);
    for(int i=1;i<dLaufzeit+1;i++)
    {
    int e=i*dErgebnis;
    Memo1->Lines->Add(e);
    }

    Aber irgendwo ist da noch ein dicker Fehler drin?!?



  • Hallo!

    So schwer ist das doch wirklich nicht.
    Vielleicht solltest du dir ein Grundlagenbuch zulegen.

    Deine Formel ist übrigens nicht korrekt.
    Entweder du berechnest den Zins einzeln für jedes Jahr (Variante 2) oder du benutzt die Zinseszinsformel (Variante 1).

    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    #include "math.h" //Erforderlich für pow(x,y) = x^y
    #include "stdio.h" //Erforderlich für sprintf(...)
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //
    //
    __fastcall TForm1::TForm1(TComponent* Owner):TForm(Owner)
    {
    //Standardwerte
    edtWert1->Text=1000; //Startkapital
    edtWert2->Text=3;    //Zinssatz in Prozent
    edtWert3->Text=3;    //Laufzeit in Jahren
    }
    //
    //
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    double dStartkapital;
    double dZinssatz;
    int iLaufzeit;
    double dErgebnis;
    char Memotext[255];
    dStartkapital=edtWert1->Text.ToDouble();
    dZinssatz=edtWert2->Text.ToDouble();
    iLaufzeit=edtWert3->Text.ToDouble();
    //Variante Nr. 1 (Zinseszinsformel)
    Memo1->Lines->Clear();
    Memo1->Lines->Add("Variante Nr. 1 (Zinseszinsformel)");
    for(int i=1;i<iLaufzeit+1;i++)
      {
      dErgebnis=dStartkapital*pow((1+dZinssatz/100.0), i);
      sprintf(Memotext, "%i. Jahr: %f",i,dErgebnis);
      Memo1->Lines->Add(Memotext);
      }
    //Variante Nr.2 (Einzelberechnung)
    Memo1->Lines->Add("");
    Memo1->Lines->Add("Variante Nr.2 (Einzelberechnung)");
    for(int i=1;i<iLaufzeit+1;i++)
      {
      dErgebnis=dStartkapital*(1+dZinssatz/100.0);
      sprintf(Memotext, "%i. Jahr: %f", i, dErgebnis);
      Memo1->Lines->Add(Memotext);
      //Kapital am Ende des n-ten Jahres ist das Startkapital für das nächste Jahr
      dStartkapital=dErgebnis; 
      }
    }
    


  • Wo ist die Kamera? Bist du Frank Elstner? Langsam reichts mir mit dir 😉

    zinsrechnen geht doch so

    double zinssatz = 5;
    double starkapital = 2000;
    int laufzeit = 3;
    double ergebniss = startkapital;
    
    for(int i=1:i<=laufzeit;i++)
    {
        ergebniss = ergebniss*(1+zinssatz/100);
        Memo1->Lines->Add(ergebniss);
    }
    

    oder etwa nicht?



  • Hahahaha,
    ich habs raus!!! 😃

    double dStartkapital;
    double dZinssatz;
    double dLaufzeit;
    double dErgebnis;
    dStartkapital=edtWert1->Text.ToDouble();
    dZinssatz=edtWert2->Text.ToDouble();
    dLaufzeit=edtWert3->Text.ToDouble();
    dErgebnis=dStartkapital;
    for(int i=1;i<dLaufzeit+1;i++)
    {
    dErgebnis=dErgebnis*(1+dZinssatz/100);
    Memo1->Lines->Add(dErgebnis);
    }

    Ein dickes "super vielen Dank"
    an GreyHound, der mir hier
    geholfen hat!!!!!!! 👍

    Eine Frage hät ich aber noch,
    falls es keine Umstände bereitet.
    Wieso: "dErgebnis=dStartkapital;" 😕



  • moonboon schrieb:

    Hahahaha,
    ich habs raus!!! 😃

    lol weil ->

    moonboon schrieb:

    Wieso: "dErgebnis=dStartkapital;" 😕

    hast dann wohl doch nicht selbst rausgefunden 😉

    naja das musst du machen, weil du ja startkapital nicht verändern sollst, also speicherst du den wert in einer neuen variablen, die dann in der schleife immer verändert wird (da ja das ergebnis pro jahr steigt, aber nicht das startkapital)

    [Edit] gehörte wohl eigentlich ins C++ oder Mathe Forum 😉


Anmelden zum Antworten