Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Annuitätendarlehn programmieren (https://www.delphipraxis.net/107663-annuitaetendarlehn-programmieren.html)

crusor 31. Jan 2008 12:23


Annuitätendarlehn programmieren
 
Hallo,

ich habe ein Programm erstellt, wo nach Eingabe der Schulden, des Zinsens, der Tilgung und der Jahre, die Schulden nach einer bestimmter Jahresanzahl errechnet werden.

Hier der Quelltext:
Delphi-Quellcode:
procedure TForm1.BBerechnenClick(Sender: TObject);
var kb,ts,zs,Ekb,Z,T,An,Ekb1,P: real;
var n,i,a:integer;
begin
kb:=strtofloat(Edit1.Text);
zs:=strtofloat(Edit2.Text);
ts:=strtofloat(Edit3.Text);
n:=strtoint(Edit4.Text);

//berechnen
a:=0;    // variable


                     Z:=kb*zs/100; // Zinsenberechnung
                     T:=kb*ts/100;  // Tilgung
                     An:=Z+T;      // Annuität
                     Ekb:=kb-T;     // Endkapital am Jahresende

                     a:=a+1;         // Anzahl der Jahre
                     stringgrid1.Cells[0,1]:=inttostr(a);
                     stringgrid1.Cells[1,1]:=floattostrf(kb,fffixed,10,2);    // Ausgabe der Daten in einer Tabelle
                     stringgrid1.Cells[2,1]:=floattostrf(Z,fffixed,10,2);
                     stringgrid1.Cells[3,1]:=floattostrf(T,fffixed,10,2);
                     stringgrid1.Cells[4,1]:=floattostrf(An,fffixed,10,2);
                     stringgrid1.Cells[5,1]:=floattostrf(Ekb,fffixed,10,2);
                     kb:=Ekb  ;   // Kredibetrag wird Endkreditbetrag zugewiesen



       // neue Schleife (es beginnt eine andere Rechnung)
For i:=1 TO n-1 DO begin
                     P:=Ekb1+Z; // endkapital + zinsen
                     Z:=Ekb*zs/100; // zinsenberechnung
                     T:=An-Z;    // tilgung
                     An:=Z+T;      // annuität
                     Ekb1:=Ekb-T;    // endkapital neu
                     a:=a+1;          // variable für Ausgabe (also Jahre)
                     stringgrid1.Cells[0,a]:=inttostr(a);
                     stringgrid1.Cells[1,a]:=floattostrf(Ekb,fffixed,10,2);
                     stringgrid1.Cells[2,a]:=floattostrf(Z,fffixed,10,2);
                     stringgrid1.Cells[3,a]:=floattostrf(T,fffixed,10,2);
                     stringgrid1.Cells[4,a]:=floattostrf(An,fffixed,10,2);
                     stringgrid1.Cells[5,a]:=floattostrf(Ekb1,fffixed,10,2);
                     Ekb:=Ekb1   ;

                   end;

//ausgabe
stringgrid1.RowCount:=n+1 ;

end;
meine Fragen:
1. was muss ich machen, dass ausgerechnet wird (ohne eingabe der jahre), wann die schulden abbezahlt sind?
2. die schleife soll aufhören, wenn P kleiner als die im vorherigen Jahr vorzufindene Annuität ist. Und die Annuität beträgt dann: das letzte anfangskapital + Zinsen(damit bei der letzten ausgabe des endkapitals '0' erscheint,da P - P gerechnet wird).
Wie funktioniert dies?

Ich hoffe das Ihr eine Lösung dafür wisst.
Ich bedanke mich für eure Hilfe !!!

shmia 31. Jan 2008 12:44

Re: Annuitätendarlehn programmieren
 
Du solltest dir zuerst die mathematischen Formeln und Hintergründe aneignen:
http://de.wikipedia.org/wiki/Annuit%C3%A4tendarlehen
Dann solltest du diese Formeln als Delphi Funktionen in den Sourcecode aufnehmen.
Delphi-Quellcode:
function berechneAnuitaet(S0, i:Extended; n : integer):Extended;
Ist dir aufgefallen, dass du sehr oft Folgendes geschrieben hast: ?
Delphi-Quellcode:
floattostrf(x,fffixed,10,2)
Daraus kann man (sollte man !!) ebenfalls eine Funktion machen.

iKilledKenny 31. Jan 2008 13:43

Re: Annuitätendarlehn programmieren
 
Was ist denn floattostrf, wenn nicht eine Funktion?

Die Muhkuh 31. Jan 2008 13:47

Re: Annuitätendarlehn programmieren
 
Shima meint sowas:

Delphi-Quellcode:
function FTSF(Value: Double): String;
begin
  Result := floattostrf(Value,fffixed,10,2);
end;
Und anstatt FloattStrF aufzurufen, rufst Du eben FTSF auf. Hat den Vorteil, wenn sich einmal ein Paramter (die 10 oder die 2) ändert, gleich alle anderen angepasst sind. Dann brauchst Du das eben nur einmal ändern und nicht 10 mal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz