Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zinseszins (https://www.delphipraxis.net/16622-zinseszins.html)

rossinie 20. Feb 2004 10:27


Zinseszins
 
Hallo,
ich wusst nicht ob das das richtige Forum ist aber ich versuchs mal hier.
Ich würde gerne mit Delphi den Zinseszins ausrechnen.
Das Programm soll so aussehen, dass der Anwender folgendes eingibt:
Grundwert:
Prozentsatz:
Jahre:

und er bekommt dann von em Programm gesagt wieviel Geld er später hat.
Die Formel an sich ist ganz einfach(
Zinseszins formel) die ist einfach nur
endwert= grundwert* (1+zinssatz)
Das ist für ein Jahr. Für 2 wäre es dann so:
endwert= grundwert * (1+zinssatz) * (1+zinssatz)

durch die eingabe des user, wieviele jahre er ausgerechnet haben will soll er für jedes jahr ein * (1+zinssatz)
in die rechnung dabei schreiben...

wie lös ich das am besten?

Danke
:angle: rossinie :angle:

manuel 20. Feb 2004 10:34

Re: Zinseszins
 
Hi rossinie,

die formel sieht so aus, als ob man das so machen könnte:

endwert= grundwert * ((1+zinssatz)^jahre).

Aber nagel mich da nicht fest.
war in mathe noch nie so doll... :roll:

manuel

Nikolas 20. Feb 2004 10:36

Re: Zinseszins
 
Sorry, ich bin heute morgen noch nicht so ganz auf der Höhe, ich hab mir meinen Code grad noch mal angesehen und gesehen dass er so nicht funzen kann.

Sorry, Toxman

rossinie 20. Feb 2004 10:49

Re: Zinseszins
 
ergebnis := grundwert ((1+(zins/100))^jahre);

das will er irgendwie nicht :-(
kennt delphi überhaupt den ^ ?

der link geht nicht weil er so aussieht.
http://http://www....
ihr müsstet das erste http:// weg machen...
danke
:angle: rossinie :angle:

Tyrael Y. 20. Feb 2004 10:51

Re: Zinseszins
 
Nein Delphi kennt kein ^

guck dir mal die Power-Funktion an

Nikolas 20. Feb 2004 10:52

Re: Zinseszins
 
so nächster Versuch:

Herzlich willkommen in der DelphiPraxis

Du kannst es mit einer For-Schleife machen:
Delphi-Quellcode:
var
i,k: integer; // Anzahl der Jahre, Zähler
endwert,grundwert,zinssatz: Real;
begin

i:= strtoint(edit1.text); // Edit in dem du die anzahl der Jahre eingeben kannst

endwert :=grundwert * (1+zinssatz); // Konto nach dem ersten Jahr

For k:=1 to i-1 do
begin
endwert:=endwert * (1+zinssatz)
end;
Schau dir mal für die Idee von Manuel 'Power' an.

Toxman

Edit: [Delphi-Tags gesetzt]

rossinie 20. Feb 2004 10:53

Re: Zinseszins
 
er meitne als fehler:
pointer typ required

manuel 20. Feb 2004 10:54

Re: Zinseszins
 
Sorry, nein Delphi kennt ^ nicht.
Das ist nur das Hoch-Zeichen, wenn man am PC sonst nix anderes hat.
hätte ich dazuschreiben müssen.
mit der Power-Funktion sollte es aber klappen


gruß

manuel

rossinie 20. Feb 2004 10:56

Re: Zinseszins
 
power funktion?
sorry arbeite erst ein paar wochen mit delphi

Tyrael Y. 20. Feb 2004 11:00

Re: Zinseszins
 
Geh unter Menüpunkt "Hilfe" bzw. "Help" dort
den Menüpunkt "Delphi Hilfe" bzw. "Delphi Help"

es öffnet sich ein Dialog
dort die Registerkarte Index auswählen und
in das Suchfeld Power eintippen

dann bei den Ergebnissen auf Power Function ein klick ausführen..

fkerber 20. Feb 2004 11:00

Re: Zinseszins
 
Hi!

Zitat:

Die Funktion errechnet aus der Basis Base und dem beliebigen Wert Exponent die Potenz.

Unit

Math

Kategorie

Arithmetik

Delphi-Syntax:

function Power(const Base, Exponent: Extended): Extended;

C++ Syntax:

extern PACKAGE Extended __fastcall Power(const Extended Base, const Extended Exponent);

Beschreibung

Power errechnet aus Base und einen beliebigen Wert die Potenz. Wird als Exponent ein Bruchwert oder ein Wert größer MaxInt angegeben, muss Base größer als 0 sein.
Ciao fkerber

rossinie 20. Feb 2004 11:05

Re: Zinseszins
 
dh:
ich hab noch nie mit dieser o.ä. gearbeitet,
wie solln das später aussehen?
kann mit jmd eine musterlösung geben?
Danke
:angle: rossinie :angle:

manuel 20. Feb 2004 11:06

Re: Zinseszins
 
Die Power-Funktion sieht so aus:

Delphi-Quellcode:
Power(Base, Exponent: Extended)
und so müsste dann eigentlich die Rechnung aussehen:

Delphi-Quellcode:
Result:=grundwert * Power(1+zinssatz, jahre);
Hab hier grad kein Delphi installiert, sonst könnte ichs ausprobieren,
sollte aber eigentlich funktionieren.

Die unit Math muss noch eingebunden werden.

ciao

manuel

Nikolas 20. Feb 2004 11:06

Re: Zinseszins
 
zu Power:

schreib mal in Delphi Power , markier das ganze und drücke F1. Dann öffnet sich die Hilfe und du kannst alle mögliche infos über diese Funktion erfahren. F1 funktioniert so ziemlich immer, z.B. auch wenn du auf irgendeine Komponente geklickt hast, kannst du auch F1 drücken und erfährst so ziemlich alles, was du wissen musst.

Noch was wichtiges:

Oben in deiner Unit stehen folgende Zeilen(oder so ähnlich):
Code:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls ;
Das solltest du noch math dazuschreiben:
Code:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, math ;

Das math steht bei dir wahrscheinlich noch nicht drin. Du musst es reinschreiben, sonst wird power nicht erkannt.

Toxman

rossinie 20. Feb 2004 11:11

Re: Zinseszins
 
ja das hab ich gemacht auch power gelesen.
hat jmd ne musterlösung für mich?

fkerber 20. Feb 2004 11:17

Re: Zinseszins
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi!

Ist zwar jetzt nicht mit power, rechnet aber auch den Zinseszins aus,m vielleicht hilft es dir ja.
Der Zinssatz ist in dem Programm abhängig von der Einzahlungssumme, aber das lässt sich ja leicht ändern.

Ciao fkerber

little-wolf 20. Feb 2004 11:53

Re: Zinseszins
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo

hab da mal was gebastelt...

Vieleicht hilft es dir ja weiter...


Gruss

little-wolf


Nachtrag:
Ou, schon wieder nicht gesehen, dass es da
noch ne zweite Seite hatte... sorry... :oops:
Naja, lasse die Source mal noch drauf...

Nikolas 20. Feb 2004 11:57

Re: Zinseszins
 
Ich glaube nicht, dass es viel bringt, wenn jetzt alle, fertige Programme posten. Tipps sind sinnvoll und der Zweck der DP. Aber wenn man nur nach fertigen Lösungen fragt und die sofort bekommt, lernt man auch nichts mehr.

Toxman

fkerber 20. Feb 2004 11:59

Re: Zinseszins
 
Hi!

Ich denke er hat ja einige Tipps bekommen.
Und mein Programm funktioniert ja auch nicht direkt nach dem gewünschten System. Und ich poste niemals ein Programm wenn jemand direkt nach nem fertigen Programm fragt. Aber er hat sich ja mit dem Problem und den vorgeschlagenen Lösungen auseinandergesetzt.
Und mein Programm erfüllt auch nicht direkt seine Vorgaben (Eingabe des Zinssatzes). Insofern muss er es überarbeiten und setzt sich so schon mit dem Problem auseinander.
Ich sehe den Code als Anregung und nicht als Lösung an.

Ciao fkerber

little-wolf 20. Feb 2004 12:04

Re: Zinseszins
 
An Toxman

Zitat:

Zitat von Toxman
Ich glaube nicht, dass es viel bringt, wenn jetzt alle, fertige Programme posten. Tipps sind sinnvoll und der Zweck der DP. Aber wenn man nur nach fertigen Lösungen fragt und die sofort bekommt, lernt man auch nichts mehr.

Ja, generell gebe ich dir recht. Wenn man aber
verwirrenden Code Postet (so wie du mit deiner For-Schlaufe)
dann ist das auch nicht unbedingt hilfreich...


Gruss

little-wolf

fkerber 20. Feb 2004 12:07

Re: Zinseszins
 
Hi!

Bitte geht doch nicht so grob miteinander um.
Sicher, die For-Schleife ist nicht in Ordnung, aber Fehler passieren und die Idee mit der For-Schleife an sich ist nicht schlecht (so habe ich es auch gelöst).

Und mal nen Fehler zu schreiben hat ja nix mit dem Posten "fertiger" Programme zu tun.
Also lasst doch euren Privatkrieg. Jeder hat halt ne andere Auffassung

Und nun back to Topic :cheers:

Ciao fkerber

Nikolas 20. Feb 2004 12:14

Re: Zinseszins
 
Warum soll die Schleife verwirrend sein? Es ist die genaue Umsetzung der Frage:

Zitat:

durch die eingabe des user, wieviele jahre er ausgerechnet haben will soll er für jedes jahr ein * (1+zinssatz)
in die rechnung dabei schreiben...
Und die For-Schleife arbeitet jedesmal (nach jedem Jahr) nach dem gleichen System.

Auch das PRogramm von fkerber ist nach der Idee aufgabaut. Er hat nur noch die Betragsabhängige Verzinsung mit drin, aber sonst seh ich grad keine Unterschiede.

Delphi-Quellcode:
 for i:=2 to laufzeit do
  begin
    auszahlung:=auszahlung*((zinssatz+100)/100);
  end;
und

Delphi-Quellcode:
For i:=1 to i-1 do
begin
endwert:=endwert * (1+zinssatz)
end;
sehen eigentlich ganz gleich aus.

Toxman

fkerber 20. Feb 2004 12:18

Re: Zinseszins
 
Hi!

Ich weiß ja nicht, aber:

Delphi-Quellcode:
For i:=1 to i-1 do
Heißt das nicht eigentlich:

Delphi-Quellcode:
For i:=1 to 0 do // weil du i=1 setzt und dann 1-1=0!
Vielleicht ist es echt dasselbe, aber ich glaube du verwendest i doppelt, als Zählvariable und für die Jahreszahl.

Ciao fkerber

Nikolas 20. Feb 2004 12:33

Re: Zinseszins
 
:oops: Da hst du recht. Ich hab anscheinend als Zähler die faksche variable angegeben. Ich hab das ganze aber auch implementiert gehabt und da hats geklappt, wahrscheinlich ist da was beim Kopieren schief gegangen ich werds mal in
Delphi-Quellcode:
for k:=1 to i-1
ändern. Dann dürfte es auch so klappen.

:duck: Toxman

fkerber 20. Feb 2004 12:34

Re: Zinseszins
 
Hi!

Jepp, dann müsste es gehen, es entpsricht ja dann auch meinem Ansatz und der geht auch.

Ciao fkerber

rossinie 20. Feb 2004 12:42

Re: Zinseszins
 
Delphi-Quellcode:
begin
   grundwert := strtofloat (edit1.text);
   zins := strtofloat (edit2.text);
   label9.caption := floattostr (ergebnis);
   ergebnis := grundwert * (1+ zins);
end;
Also wenn ich das nur für ein jahr mache berechnet der das irgendwie falsch!
wenn ich dann berechne und wieder berechne klicke kommen unterschiedliche werte raus...
?!

wie kann ich denn die ausgabe auf max 10 zahlen und max 2 nachkommastellen begrenzen?
Irgendwas wie:
abel9.caption := floattostrf (ergebnis, fffixed 10,2);

oder sowas?!

:angle: rossinie :angle:

fkerber 20. Feb 2004 12:47

Re: Zinseszins
 
Hi!

Also für das Formatieren wie schon von dir erwähnt

Delphi-Quellcode:
Floattostrf(ergebnis,FFfixed,10,2)
Und was deinen Quellcode-Auszug angeht:
Ich würde zuerst Ergebnis berechnen lassen und dann ausgeben, nicht umgekehrt.

Was dein konkretes Problem angeht, ohne den Berechnungs-Code kann ich es nicht nachvollziehen.
Machst du es mit Power oder mit der For-Schleife?

Falls du es mit der For-Schleife machst, schau dir mal mein Prog an.

Ciao fkerber

manuel 20. Feb 2004 12:49

Re: Zinseszins
 
vertausche mal die letzten beiden zeilen in deinem code.
Du weist das ergebnis dem Label zu bevor es berechnet wird...

Nikolas 20. Feb 2004 12:51

Re: Zinseszins
 
angenommen, das ist dein OnClick-Ereigniss:

Delphi-Quellcode:
Source:
begin
   grundwert := strtofloat (edit1.text); // Hier liest du ein
   zins := strtofloat (edit2.text);      // Hier liest du ein
   label9.caption := floattostr (ergebnis); // Hier gibst du aus ???
   ergebnis := grundwert * (1+ zins);   // Hier verarbeitest du ???
end;
Tausch mal die Zeilen aus
Toxman

Matze 20. Feb 2004 13:06

Re: Zinseszins
 
Ups, hatte das gleiche gepostet. ;)

rossinie 20. Feb 2004 13:09

Re: Zinseszins
 
cool danke, funktioniert.
Ich kann mir nur so schlecht merken wann . wann , kommt...
:-(
Aber mein programm funzt.
Habs mit 1jahr gemacht dann ist auch gut.
DANKE!

fkerber 20. Feb 2004 13:10

Re: Zinseszins
 
Hi!

Zitat:

Ich kann mir nur so schlecht merken wann . wann , kommt...
Was meinst du damit?

Ciao fkerber

Urba 20. Feb 2004 18:58

Re: Zinseszins
 
Hallo,

Ich mische mich nun auch noch ein, denn ich habe gesehen, dass irgendwas komisch ist an deiner Berechnung. Bist du dir sicher, dass dies funktioniert ? So wie du es dort hast kannst du aber nicht mit einem richtigen Prozentsatz rechnen. Diesen würdest du nämlich beispielsweise mit 9% angeben. Ist dies der Fall kann eigentlich nur das falsche herauskommen, denn dann wäre ...

Delphi-Quellcode:
ergebniss := grundwert * (1+ zins);
... ja eingesetzt ...

Delphi-Quellcode:
ergebniss := grundwert * (1+9);
... und somit kann dabei nicht das richtige Ergebniss kommen. Du musst aufpassen dass du den Zinswert vorher noch durch 100 teilst, denn nur so ist es stimmig :

Delphi-Quellcode:
ergebniss := grundwert * (1+ zins/100);
Gruss
Urba


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:47 Uhr.

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