![]() |
Probleme beim programmieren eines Kapitalwertrechners
Hallo zusammen.
Bin dabei ein Kapitalwertrechenr zu schreiben und mein Quelltext ist folgender:
Delphi-Quellcode:
Das Problem ist das ich die Werte die in den Lines des Memo stehen addieren muss. Leider funktioniert meine Vorgehensweise nicht so recht.
unit Kapitalwertberechnung;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, math; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; BitBtn1: TBitBtn; Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin self.memo1.Text:=(''); end; procedure TForm1.Button1Click(Sender: TObject); var summe, zinssatz, z, zahlungen: real; i, n: integer; begin if edit1.text=('') then begin showmessage ('Bitte Zinssatz eingeben.'); exit end; if memo1.lines.strings[0]=('') then begin showmessage ('Bitte Zahlung eingeben.'); exit; end; i:=0; zahlungen:=0; summe:=0; zinssatz:=strtofloat(edit1.text); while (memo1.lines.strings[i]<>('')) do begin i:=i+1; end; n:=i; z:=1+zinssatz/100; z:=z*power(1/z,i); while n>0 do begin zahlungen:=zahlungen+strtofloat(memo1.Lines.Strings[n]); n:=n-1; end; summe:=zahlungen*z; self.edit2.text:=floattostr(summe); end; end. Bitte helft mir :D ich stehe gerne zu Rückfragen bereit ;) MFG Kevin |
Re: Probleme beim programmieren eines Kapitalwertrechners
Hallo,
versuche mal diesen Passus:
Delphi-Quellcode:
durch diesen auszutauschen.
n:=i;
while n>0 do begin zahlungen:=zahlungen+strtofloat(memo1.Lines.Strings[n]); n:=n-1; end;
Delphi-Quellcode:
Vielleicht kannst Du noch schreiben, was an Deiner Vorgehensweise nicht funktionert.
zahlungen:=0;
for n:=0 to memo1.lines.count -1 do if memo1.Lines.Strings[n] <> '' then zahlungen:=zahlungen + strToFloat(memo1.lines.Strings[n]); Im Memo sind da pro Zeile die Einzahlungen eines Jahres eingetragen. Dann würde ja auch noch ein Zinseszins Effekt eintreten. Grüße Klaus |
Re: Probleme beim programmieren eines Kapitalwertrechners
Zitat:
|
Re: Probleme beim programmieren eines Kapitalwertrechners
Außerdem solltest Du Logik und Darstellung trennen, d.h. die Berechnung in eine eigene Funktion auslagern, die dann vom Button (ggf. mit entsprechenden Parametern) aufgerufen wird.
P.S.: Willkommen in der DP :dp: |
Re: Probleme beim programmieren eines Kapitalwertrechners
also so wie ich es hatte kommt da '" is not is valid floating pointvalue'.
ich probier mal deinen Vorschlag Klaus danke |
Re: Probleme beim programmieren eines Kapitalwertrechners
wie trennt man Logik und Darstellung?
einfach eine Prozedur schreiben, die vom Button.click aufgerufen wird? danke für das willkommen ;) |
Re: Probleme beim programmieren eines Kapitalwertrechners
Kleines Beispiel (soll die Summe der in Stringliste übergebenen Zahlen berechnen):
Delphi-Quellcode:
Ein Aufruf könnte dann so aussehen:
function MySum(const sl: TStrings): Extended;
var i: integer; begin Result := 0; for i := 0 to Pred(sl.Count) do Result := Result + StrToFloatDef(sl[i],0); end;
Delphi-Quellcode:
[edit] Tippfehler, der Parametertyp muss natürlich TStrings heißen. [/edit]
procedure TFormWuppdi.ButtonBlaClick(Sender: TObject);
begin ShowMessage(FloatToStr(MySum(ListBoxBlubb.Items))); end; |
Re: Probleme beim programmieren eines Kapitalwertrechners
oh.. ja ^^ hab ich eigentliich vergessen zu erwähnen das ich inner 11 bin und siet anfang des Jahres im Informatik-Kurs programmiere und seit 3Monaten mit Delphi? :D
deshalb dauerts so lange bis ich zurückschreibe. muss erst euere Beiträge verstehn. Das mit Logik und so trennen merk ich mir für die nächsten Aufgaben, hab noch 10 die nicht minder schwierig sind für mich :D aber zum thema:
Delphi-Quellcode:
das heißt doch:for n:=0 to memo1.lines.count -1 do if memo1.Lines.Strings[n] <> '' then zahlungen:=zahlungen + strToFloat(memo1.lines.Strings[n]); um auf n=0 zu kommen zähle die memo.lines solange um 1 runter bis n=0 ist. oder? also mein Ziel ist es die Werte der einzelnen Lines im Memo zu addieren. Das ganze soll diese Rechung wiederspiegeln: Kapitalwert=Summe der Zahlung in Periode i *(1+Zinssatz/100)^-i Der Kapitalwert soll ausgegeben werden im Edit2 Feld. Eingeben wird der Zinssatz in Edit1. In Memo1 werden pro Line die Zahlungen eingeben, negativ oder positiv. Line 0 soll i=0 sein, line 10 also i=10. öhm? hilft euch das mir das zu erklären bzw beim problem zu helfen? danke für eure zeit |
Re: Probleme beim programmieren eines Kapitalwertrechners
.. die
for n:=0 to memo1.lines.count -1 Schleife fängt bei 0 und zählt dann bis zum Ende des Memofeldes hoch. Die Zeilen eines Memo sind 0 indiziert, d.h. sie fangen bei 0 an und enden bei Zeilenanzahl -1. Grüße Klaus |
Re: Probleme beim programmieren eines Kapitalwertrechners
Wenn man es als While-Schleife umschreibt, wird es vielleicht etwas klarer.
Delphi-Quellcode:
n := 0; //wir beginnen bei Index 0 (= erste Zeile)
while n < Memo1.Lines.Count do begin if Memo1.Lines[n] <> '' then zahlungen:=zahlungen + strToFloat(memo1.lines[n]); n := n + 1; //n hochzählen für nächste Zeile end; |
Re: Probleme beim programmieren eines Kapitalwertrechners
JA :) mit der while hab ich kapiert. hatte die for noch nich. werd ich mir mal anschaun. die for-schleife scheint ja recht praktisch zu sein :)
hab das programm mit dem neuen Code getestet. Funktioniert. Ich mach noch nen bisschen feinarbeit und dann mach ich mich an die nächste Aufgabe :D danke für eure Hilfe. Seid nicht überascht wenn ich euch gleich nochmal ein Problem ins Forum stelle. Unser Info lehrer hat uns aufgaben gegeben für die ferien die nur 2 im ganzen Kurs lösen könne und auch nur mit forum und google hilfe :D allein schon deshalb weil wir die hälfte im info-unterricht noch nich hatten. oder unsre mathematischen kenntnisse noch nicht weit genug sind :D mfg kevin |
Re: Probleme beim programmieren eines Kapitalwertrechners
Als Lesestoff sei empfohlen:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:33 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