Brauche hilfe bei Zinsrechner Programm



  • Hallo

    ja, schau dir zum Beispiel auch hier ertsmal die Grundlagen an.

    bis bald
    akari



  • Die Sachen in den Tutorials sind leider
    alle Neuland für mich als blutiger Anfänger.

    Kann mir denn Niemand zeigen, wie ich
    eine Schleife für die Laufzeit in meinem
    Programm einbinde?



  • na tutorials sind dafür da, das diese sachen bald kein neuland mehr für dich sind, verstehst du das?
    Arbeite doch mal die ersten kapitel von diesen tutorien durch, und wenn du dann das problem noch nicht hinbekommst, frag nochmal!

    Auch geb ich dir den tipp, vielleicht nicht gleich mit einer grafischen oberfläche anzufangen, lerne lieber die basics erstmal als konsolenanwendung (wo du natürlich auch deinen zinsrechner programmieren kannst)



  • Bitte zeigt mir doch wie ich eine Schleife
    für die Laufzeit in meinem Programm einbinde?

    Wie benutze ich z.B. die "for" Schleife
    bezüglich der Laufzeit in meinem Programm?

    In den Tutorials sind zu viele
    Befehle die ich garnicht kenne.



  • wenn du nichtmal ein tutorial für blutige anfänger kapierst, dass bei 0 anfängt, dann bist du nicht motiviert genug das zu verstehen oder einfach zu faul.

    ich bezweifle dass jemand dir deine hausaufgaben macht, damit du dich nicht mit so einer komischen sache, wie programmieren auseinandersetzen musst.

    mfg
    BigNeal



  • moonboon schrieb:

    Bitte zeigt mir doch wie ich eine Schleife
    für die Laufzeit in meinem Programm einbinde?

    int main()
    {
     int x=10;
     for(int i=0;i<10;++i)
      {
       x=x+(i*2);  
       cout<<x<<endl;
      }
     return 0;
    }
    

    moonboon schrieb:

    Wie benutze ich z.B. die "for" Schleife
    bezüglich der Laufzeit in meinem Programm?

    versuchs halt mal nach meinen beispiel

    moonboon schrieb:

    In den Tutorials sind zu viele
    Befehle die ich garnicht kenne.

    die befehle werden in guten tutorials alle erklärt

    [Edit] sollten jetzt fragen kommen wie "ich finde keine int main()" oder "was ist int main() und return 0", dann verweigere ich jede weitere antwort, ohne das du dir wenigstens die ersten 5 kapitel eines tutorials durchgenommen hast!



  • Also in meinem Skript steht folgendes:

    for(Initialisierung;Bediengungsausdruck;Aktualisierung)
    Anweisung;

    Was ist den überhaupt mit Initialisierung,
    Bediengungsausdruck und Aktualisierung gemeint?



  • Schaust du dir die Links, die hier so gepostet werden überhaupt an? Das von Ser1al gepostete Tutorial erklärt das sehr schön.



  • Ja natürlich seh ich mir die gepoststen Links an,
    aber ich weiss nicht wie ich die Sachen in meinen
    Zinsrechner anwenden soll.

    Ich verbringe jetzt schon den ganzen Tag mit diesem
    Programm und werde einfach kein bisschen schlauer.

    Wenn mir mal endlich Jemand zeigen könnte wie die
    "for" Schleife in meinem Programm aussehen müsste,
    würde ich es vielleicht auch verstehen.



  • Das Problem ist doch wohl eher, dass du u.U. nicht weißt, wie man eine jahresweise Zinsberechnung vornimmt?

    Deine Schleife kann doch nur

    vom ersten Jahr bis zur Anzahl eingegebener Jahre laufen.

    dann eine Zinsberechung mit den aktuellen Daten vornehmen

    sich die Höhe der errechneten Zinsen merken

    Ergebnis mit den Daten im Memo ausgeben

    nächstes Jahr

    Nach der Schleife werden die Zinsen oder Zinsen + Kapital ausgegeben.

    Üblicherweise nimmt man dazu ein paar Editfelder in seine Form auf, um da die Ausgangsdaten einzugeben, ein Memofeld, um die einzelnen Ergebnisse auszugeben und ein Button mit dem Titel "Berechne", in dem die Berechung in einer Schleife durchgeführt wird.

    Auch wäre es doch wohl ein Weg doch wenigsten erstmal ein Versuch zu starten. Dann kannst du doch immer noch posten: "seht her das habe ich gemacht, aber es geht nicht. warum nicht?"



  • 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;" 😕


Anmelden zum Antworten