Problem Zinsrechner

  • Hey Leute habe foglendes Programm zum berechnen von Wachstümern geschrieben.

    [autoit]

    #cs ----------------------------------------------------------------------------

    [/autoit][autoit][/autoit][autoit]

    AutoIt Version: 3.3.4.0
    Author: myName

    [/autoit][autoit][/autoit][autoit]

    Script Function:
    Template AutoIt script.

    [/autoit][autoit][/autoit][autoit]

    #ce ----------------------------------------------------------------------------

    [/autoit][autoit][/autoit][autoit]

    ; Script Start - Add your code below here

    [/autoit][autoit][/autoit][autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=c:\users\jonas\downloads\koda_1.7.2.0\forms\wachstum.kxf
    $Form1_1 = GUICreate("Wachstumssimulator Version 1.0", 756, 199, 192, 135)
    $lineargo = GUICtrlCreateButton("Berechnen", 48, 144, 97, 33, $WS_GROUP)
    $expogo = GUICtrlCreateButton("Berechnen", 200, 144, 91, 33, $WS_GROUP)
    $bgrgo = GUICtrlCreateButton("Berechnen", 392, 144, 91, 33, $WS_GROUP)
    $loggo = GUICtrlCreateButton("Berechnen", 616, 144, 91, 33, $WS_GROUP)
    $Label2 = GUICtrlCreateLabel("Bestand", 32, 40, 43, 17)
    $Label3 = GUICtrlCreateLabel("Änderung", 31, 65, 50, 17)
    $Label4 = GUICtrlCreateLabel("Zeit", 35, 90, 22, 17)
    $linearb = GUICtrlCreateInput("", 80, 40, 57, 21)
    $linearD = GUICtrlCreateInput("", 81, 62, 57, 21)
    $lineart = GUICtrlCreateInput("", 79, 86, 57, 21)
    $Label6 = GUICtrlCreateLabel("Bestand", 192, 38, 43, 17)
    $Label7 = GUICtrlCreateLabel("Änderung", 191, 63, 50, 17)
    $Label8 = GUICtrlCreateLabel("Zeit", 195, 88, 22, 17)
    $expob = GUICtrlCreateInput("", 240, 38, 57, 21)
    $expod = GUICtrlCreateInput("", 241, 60, 57, 21)
    $expot = GUICtrlCreateInput("", 239, 84, 57, 21)
    $Label10 = GUICtrlCreateLabel("Bestand", 392, 38, 43, 17)
    $Label11 = GUICtrlCreateLabel("Änderung", 391, 63, 50, 17)
    $Label12 = GUICtrlCreateLabel("Zeit", 395, 88, 22, 17)
    $bgrb = GUICtrlCreateInput("", 440, 38, 57, 21)
    $bgrd = GUICtrlCreateInput("", 441, 60, 57, 21)
    $bgrt = GUICtrlCreateInput("", 439, 84, 57, 21)
    $Label13 = GUICtrlCreateLabel("Wachstumsgrenze", 343, 114, 92, 17)
    $bgrn = GUICtrlCreateInput("", 435, 110, 57, 21)
    $Label15 = GUICtrlCreateLabel("Bestand", 584, 38, 43, 17)
    $Label16 = GUICtrlCreateLabel("Änderung", 583, 63, 50, 17)
    $Label17 = GUICtrlCreateLabel("Zeit", 587, 88, 22, 17)
    $logb = GUICtrlCreateInput("", 632, 38, 57, 21)
    $logd = GUICtrlCreateInput("", 633, 60, 57, 21)
    $logt = GUICtrlCreateInput("", 631, 84, 57, 21)
    $Label18 = GUICtrlCreateLabel("Wachstumsgrenze", 535, 114, 92, 17)
    $logn = GUICtrlCreateInput("", 627, 110, 57, 21)
    $Label1 = GUICtrlCreateLabel("Exponentiell", 248, 16, 61, 17)
    $Label5 = GUICtrlCreateLabel("Linear", 86, 14, 33, 17)
    $Label9 = GUICtrlCreateLabel("Begrenzt", 446, 14, 46, 17)
    $Label14 = GUICtrlCreateLabel("Logistisch", 638, 14, 51, 17)
    GUISetState(@SW_SHOW)

    [/autoit][autoit][/autoit][autoit]

    MsgBox( 64, "Willkommen !", " Herzlich Willkommen zum Wachstumssimulator Version 1.0 von Florian Jonas !")
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()

    [/autoit][autoit][/autoit][autoit]

    if $nMsg = $GUI_EVENT_CLOSE then exit
    Select

    Case $nMsg = $lineargo
    $Anzahl = GUICtrlRead ( $lineart )
    $file = FileOpen ( "Lineareswachstum.txt", 1 )
    $aenderunglinear = GUICtrlRead($lineard)
    $linearbestand = GUICtrlRead($linearb)
    $linearmax = GUICtrlRead($lineart)
    $linearjahr = 0
    FileWriteLine($file," Zeit t - Bestand B ")
    For $i = 0 To $linearmax - 1
    $linearjahr = $linearjahr + 1
    $linearbestand = $linearbestand + $aenderunglinear
    FileWriteLine($file, $linearjahr & " - " & $linearbestand)
    Next
    MsgBox( 64, "Erfolgreich", " Datei wurde unter dem Namen Lineareswachstum.txt erstellt !")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Case $nMsg = $expogo
    $Anzahl = GUICtrlRead ( $expot )
    $file = FileOpen ( "Exponentielles_Wachstum.txt", 1 )
    $aenderungexpo = GUICtrlRead($expod)
    $expobestand = GUICtrlRead($expob)
    $expomax = GUICtrlRead($expot)
    $expojahr = 0
    FileWriteLine($file," Zeit t - Bestand B ")
    For $i = 0 To $expomax - 1
    $expojahr = $expojahr + 1
    $expobestand =$expobestand + $aenderungexpo*$expobestand
    FileWriteLine($file, $expojahr & " - " & $expobestand)
    Next

    MsgBox( 64, "Erfolgreich", " Datei wurde unter dem Namen Exponentielles_Wachstum.txt erstellt !")

    Case $nMsg = $bgrgo
    $Anzahl = GUICtrlRead ( $bgrt )
    $file = FileOpen ( "Begrenztes_Wachstum.txt", 1 )
    $aenderungbgr = GUICtrlRead($bgrd)
    $bgrbestand = GUICtrlRead($bgrb)
    $bgrmax = GUICtrlRead($bgrt)
    $bgrgrenze = GUICtrlRead($bgrn)
    $bgrjahr = 0
    FileWriteLine($file," Zeit t - Bestand B ")
    For $i = 0 To $bgrmax - 1
    $bgrjahr = $bgrjahr + 1
    $bgrbestand = $bgrbestand + ($aenderungbgr * ( $bgrgrenze - $bgrbestand ))
    FileWriteLine($file, $bgrjahr & " - " & $bgrbestand)
    Next

    MsgBox( 64, "Erfolgreich", " Datei wurde unter dem Namen Begrenztes_Wachstum.txt erstellt !")

    Case $nMsg = $loggo
    $Anzahl = GUICtrlRead ( $logt )
    $file = FileOpen ( "Logistisches_Wachstum.txt", 1 )
    $aenderunglog = GUICtrlRead($logd)
    $logbestand = GUICtrlRead($logb)
    $logmax = GUICtrlRead($logt)
    $loggrenze = GUICtrlRead($logn)
    $logjahr = 0
    FileWriteLine($file," Zeit t - Bestand B ")
    For $i = 0 To $logmax - 1
    $logjahr = $logjahr + 1
    $logbestand = $logbestand + ($aenderunglog * $logbestand * ( $loggrenze - $logbestand ))
    FileWriteLine($file, $logjahr & " - " & $logbestand)
    Next

    MsgBox( 64, "Erfolgreich", " Datei wurde unter dem Namen Logistisches_Wachstum.txt erstellt !")


    EndSelect
    Wend

    [/autoit]

    So... also der Case $lineargo funktioniert einwandfrei.
    Wenn ich aber nun den Button expogo drücke so soll nun der eingegebene bestand (expobestand) + expobestand mal die eingegeben Änderung ($aenderung expo) genommen werden und das ergibt den Bestand. Das ist halt ne Schleife damit das immer mit dem Vorherigen Bestand passiert. In diesem Fall z.B Kontobestand alt + den alten Kobestand mal Zinsen. Soweit klar ?

    Das soll es dann in eine Tabelle schreiben.
    Das tut es auch es schreibt aber immer die Jahre und einfach meinen Anfangsbestand.
    Warum steigt mein Bestand nicht wie bei der exponentiellen Funktion wie bei der linearen ?
    Habe ich etwas mit den Rechenoperatoren falsch gemacht ?

    lG

    clonker

    2 Mal editiert, zuletzt von clonker (18. Februar 2010 um 20:44)

  • Okay ...
    vielleicht habe ich mich ein bisschen unklar ausgedrückt:
    Also
    der wenn der button $expogo gedrückt wird werden die daten von 3 input Feldern eingelesen.
    Dieser abschnitt ist so z.B zur Zinsberechnung

    [autoit]

    Case $nMsg = $expogo
    $Anzahl = GUICtrlRead ( $expot ) ; Wie mir gerade auffällt überflüssig :)
    $file = FileOpen ( "Exponentielles_Wachstum.txt", 1 ) ; die tabelle soll in diese datei geschrieben werden
    $aenderungexpo = GUICtrlRead($expod) ;im input $expod hat der user die Zinsen eingegeben z.B. 0,02 für 2 %
    $expobestand = GUICtrlRead($expob) ; hier hat der User den Anfangsbestand eingegeben. z.B 10 €
    $expomax = GUICtrlRead($expot) ; Anzahl der Jahre wie lange die Tabelle abgetragen werden soll
    $expojahr = 0 ; Setzt das Anfangsjahr der Tabelle fest
    FileWriteLine($file," Zeit t - Bestand B ") ;Kopf der Tabelle wird in Datei geschrieben
    For $i = 0 To $expomax - 1 ; Schleife die so oft gestartet wird wie wie der user es mit $expomax wollte so entsteht untereinander eine Tabell von Jahr 1 - ...
    $expojahr = $expojahr + 1 ;setzt jahr eins hoch ;)
    $expobestand =$expobestand + $aenderungexpo*$expobestand ;hier ist das problem. Zinsrechnung ist denke ich mal allen ein Begriff auch die Zinseszinsen.
    ;hier wird also beim ersten eingang in dieSchleife mein anfangsbuget + das buget mal zinsen
    ; beim nächsten mal das neue buget + zinsen vom neuen buget und so weiter
    FileWriteLine($file, $expojahr & " - " & $expobestand) ; hier einfach nur ins Textdokument schreiben
    Next

    MsgBox( 64, "Erfolgreich", " Datei wurde unter dem Namen Exponentielles_Wachstum.txt erstellt !")

    [/autoit]

    ; Meldung

    So dieser part

    [autoit]

    $expobestand =$expobestand + $aenderungexpo*$expobestand

    [/autoit]

    geht nicht obwohl es beim linerarem Wachstum ( Das heißt jedes Jahr einfach + betrag x) funktioniert hat

    [autoit]

    $linearbestand = $linearbestand + $aenderunglinear

    [/autoit]

    Was habe ich also falsch gemacht ???

    Hoffe es ist euch nun klarer ;)

    lG

    clonker

  • Edit2:
    Deins sollte funktionieren, bei mir funktioniert es, wenn ich es so mache Oo.
    aber wenn du es einfach so machst:
    $betrag = 10eur
    $zinsen = 0.02
    $jahre = 5

    lässt du die schleife 5x durchlaufen also von $i = 1 to $jahre
    und in der schleife immer $betrag * ($zinsen+1)

    also aus 0.02 macht er in der schleife immer 1.02.
    Da müsste dann das selbe rauskommen wie 10 * 1.02^5, und so sollte es ja gehen.

    edit: und das lineares wachstum nicht gleich dem exponentiellen wachstum ist, ist ja klar Oo :D

    edit3: also das kann nur ein fehler sein beim auslesen des guis, bzw ein fehler im gui selbst...
    in der formel/schleife IST kein fehler^^

    2 Mal editiert, zuletzt von qon (18. Februar 2010 um 21:11)

  • ich hab mir das mal angeguckt. ich hoffe, das ich das richtig verstanden habe, du meinst das doch so: zinsen werden ausgerechnet und mit dem, was im jahr zuvor schon drauf war addiert.
    mit dem nächsten jahr soll er das gleiche machen, bis er am ende der zeit angekommen ist.
    wenn das so richtig ist, dann funktioniert das doch auch, denn genau das macht das programm bis jetzt.
    also bei mir macht es das zu mindest, von daher bin ich grad am rätseln, was du genau jetzt willst ?(

    Mfg. PCKing


    Mein PC

    CPU: AMD FX 8350 8x4.00GHz
    Ram: 8GB DDR3
    Grafikkarte: Nvidia Geforce GTX 960 (4GB)
    Festplatten: 500GB SSD 1TB HDD
    Laufwerk: Blueray RW+ Brenner

  • Okay danke für eure Antworten !
    Ich hatte mich auch schon gewundert warum es nicht geht. Habt ihr mal den gesamt Script probiert ? Ich kann es leider gerade nicht testen da ich übers WE weg bin. Schätze aber das ich die input felder im Fenster falsch sortiert habe und in einem z.B Prozent garnichts drin steht da es an der falschen Stelle im GUI ist z.B für linear oder begrenz. Das würde auch erklären warum es immer der Anfangsbestand ist 10 + 10*0 = 10 :D Also vielen Dank war kurz vorm Nervenzusammenbruch. Melde mich nach dem WE obs geht ;)

    lg clonker