Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - delphi, auszahlungsplan
Anna123 - So 08.02.09 21:42
Titel: delphi, auszahlungsplan
Hey Leute ich möchte einen Auszahlungsplan erstellen bin auch schon weit gekommen aber ich weiß nicht wie ich das machen kann dass mein Kapital jährlich verzinst wird . also es geht mir darum: ich habe ein startkapital und monatliche entnahmen und jedes jahr wird das noch vorhandene kapital verzinst ... ich komm nicht weiter
hier das was ich geschriebem hab
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| program Auszahlungsplan;
{$APPTYPE CONSOLE}
uses SysUtils;
var m,i,Entnahme:integer; Startkapital,Zinsen:real;
begin
write('Startkapital: '); readln(Startkapital); write('Monatliche Entnahmen: '); readln(Entnahme); write('Jaehrliche Verzinsung: '); readln(Zinsen); m:=0; i:=0; repeat m:=m+1; Startkapital:=Startkapital-Entnahme;
if m=12 then (hier muss der Fehler sein) Startkapital:=Startkapital*(Zinsen/100);
until (Startkapital=0) or (Startkapital<0); write('So viele Monate kommen Sie damit aus: '); write(m); writeln; write('Das sind ',m div 12,' Jahre und ',m mod 12,' Monat(e) !'); readln;
end. |
wäre nett wenn mir jemand einen tipp geben könnte...
Moderiert von
Narses: Delphi-Tags hinzugefügt
Webo - So 08.02.09 21:45
Wo hackt's denn ?
Bei den Delphikentnissen oder einer logischen Überlegung ?
Bzw.: Vor welchem Problem stehst du ?
jfheins - So 08.02.09 21:53
Probier mal statt
Delphi-Quelltext
1: 2:
| if m=12 then (hier muss der Fehler sein) Startkapital:=Startkapital*(Zinsen/100); |
das hier:
Delphi-Quelltext
1: 2:
| if (m mod 12) = 0 then (jedes jahr verzinsen statt nur nach dem erstem) Startkapital:=Startkapital*(Zinsen/100); |
Anna123 - So 08.02.09 23:51
Webo hat folgendes geschrieben : |
Wo hackt's denn ?
Bei den Delphikentnissen oder einer logischen Überlegung ?
Bzw.: Vor welchem Problem stehst du ? |
--> Delphi-Kentnisse ;-)
jaenicke - Mo 09.02.09 00:20
Nicht nur. ;-)
Delphi-Quelltext
1:
| Startkapital:=Startkapital*(Zinsen/100); |
Startkapital*(Zinsen/100) sind nur die Zinsen :!: Das heißt wenn du ein Kapital von 400 und 10% Zinsen z.B. hast, dann setzt du es nicht auf 400 + 40 sondern auf 40. ;-)
Also:
Delphi-Quelltext
1:
| Startkapital := Startkapital + Startkapital*(Zinsen/100); |
Dazu noch
jfheins Korrektur, dann passt das.
Delphi-Quelltext
1:
| until (Startkapital=0) or (Startkapital<0); |
geht auch kurz so:
Delphi-Quelltext
1:
| until (Startkapital <= 0); |
;-)
Und das war es auch schon.
Anna123 - Mo 09.02.09 08:34
jaenicke hat folgendes geschrieben : |
Nicht nur. ;-) Delphi-Quelltext 1:
| Startkapital:=Startkapital*(Zinsen/100); | Startkapital*(Zinsen/100) sind nur die Zinsen :!: Das heißt wenn du ein Kapital von 400 und 10% Zinsen z.B. hast, dann setzt du es nicht auf 400 + 40 sondern auf 40. ;-)
Also: Delphi-Quelltext 1:
| Startkapital := Startkapital + Startkapital*(Zinsen/100); | Dazu noch jfheins Korrektur, dann passt das.
Delphi-Quelltext 1:
| until (Startkapital=0) or (Startkapital<0); | geht auch kurz so: Delphi-Quelltext 1:
| until (Startkapital <= 0); | ;-)
Und das war es auch schon. |
ja stimmt^^ das ist mir noch gar nicht aufgefallen .. danke !
---
Moderiert von
Narses: Beiträge zusammengefasst---
Hey jetzt hab ich alles berichtigt.. es scheint auch alles logisch. aber wenn ich das Programm starte dann funktioniert das nicht ... ich kann kapital, entnahmen und zinsen eingeben und dann schließt sich das fenster... das hat er vorher nicht gemacht, wober er ja da aber die zinsen nicht richtig berechnet hat...
kp was ich da noch machen soll....
---
Moderiert von
Narses: Beiträge zusammengefasst---
so siehts jetzt aus :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| program Auszahlungsplan;
{$APPTYPE CONSOLE}
uses SysUtils;
var m,Entnahme:integer; Startkapital,Zinsen:real;
begin
write('Startkapital: '); readln(Startkapital); write('Monatliche Entnahmen: '); readln(Entnahme); write('Jaehrliche Verzinsung: '); readln(Zinsen); readln; m:=0;
repeat m:=m+1; Startkapital:=Startkapital-Entnahme;
if (m mod 12) = 0 then Startkapital:=Startkapital+Startkapital*(Zinsen/100) else Startkapital:=Startkapital;
until (Startkapital=0) or (Startkapital<0); write('So viele Monate kommen Sie damit aus: '); write(m); writeln; write('Das sind ',m div 12,' Jahre und ',m mod 12,' Monat(e) !'); readln;
end. |
Moderiert von
Narses: Delphi-Tags hinzugefügt
jaenicke - Mo 09.02.09 09:13
Bitte schreibe deinen Quelltext in Delphi-Tags, dann sieht der auch richtig dargestellt aus. ;-)
Quelltext
1:
| <span class="inlineSyntax"><span class="codecomment">{PROTECTTAGa07fe42dbc52cc98e3168133b2415ad6}</span></span> |
Anna123 hat folgendes geschrieben : |
| Hey jetzt hab ich alles berichtigt.. es scheint auch alles logisch. aber wenn ich das Programm starte dann funktioniert das nicht ... ich kann kapital, entnahmen und zinsen eingeben und dann schließt sich das fenster... |
Bei mir funktioniert es, ich habe es mit 1000, 50 und 10 ausprobiert z.B. und noch ein paar andere Daten, das scheint zu gehen. :nixweiss:
Anna123 hat folgendes geschrieben : |
Delphi-Quelltext 1: 2:
| readln(Zinsen); readln; | |
Das zweite Readln bedeutet, dass man noch einmal Return drücken muss, warum? ;-)
Anna123 hat folgendes geschrieben : |
Delphi-Quelltext 1: 2:
| if (m mod 12) = 0 then Startkapital:=Startkapital+Startkapital*(Zinsen/100) else Startkapital:=Startkapital; | |
Das else kannst du dir sparen, denn du veränderst den Wert da ja nicht.
Insgesamt also:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| program Auszahlungsplan;
{$APPTYPE CONSOLE}
uses SysUtils;
var m, Entnahme: Integer; Startkapital, Zinsen: real;
begin write('Startkapital: '); readln(Startkapital); write('Monatliche Entnahmen: '); readln(Entnahme); write('Jaehrliche Verzinsung: '); readln(Zinsen);
m := 0;
repeat m := m + 1; Startkapital := Startkapital - Entnahme;
if (m mod 12) = 0 then Startkapital := Startkapital + Startkapital*(Zinsen/100);
until (Startkapital <= 0);
write('So viele Monate kommen Sie damit aus: '); write(m); writeln; write('Das sind ',m div 12,' Jahre und ',m mod 12,' Monat(e) !'); readln; end. |
Das funktioniert bei mir (genauso wie deine letzte Variante).
Anna123 - Mo 09.02.09 09:18
hey danke dir ;)
aber leider funktioniert das immer noch nicht ... und ich kanns mir nicht erklären warum es bei dir funktioniert und bei mir nicht...
---
Moderiert von
Narses: Beiträge zusammengefasst---
ich habs jetzt auch mit deinen zahlen ausprobiert. mit denen funktioniert es aber mit höheren oder ungeraden nicht ...
jaenicke - Mo 09.02.09 09:35
Ach so, jetzt weiß ich was du meinst. Wenn du natürlich z.B. mehr Zinsen gibst als Geld entnimmst, dann wird das Kapital ja immer größer. Das wünscht man sich zwar, aber dann gibt es keinen Abbruch.
Du müsstest also schauen, dass du irgendwann abbrichst. Z.B., wenn das Kapital sehr hoch wird oder sehr viele Monate abgelaufen sind.
Natürlich lässt sich das auch berechnen, ob ein Abbruch nötig ist, weil es nicht abnehmen wird. :zwinker:
Anna123 - Mo 09.02.09 18:34
Ja natürlich ! Wieso bin ich nicht selbst drauf gekommen ^^... und mir war das ein rätsel, warum das nicht klappen will.... danke nochmal an alle ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!