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=0or (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 user profile iconNarses: 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

user profile iconWebo hat folgendes geschrieben Zum zitierten Posting springen:
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 user profile iconjfheins Korrektur, dann passt das.


Delphi-Quelltext
1:
until (Startkapital=0or (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

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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 user profile iconjfheins Korrektur, dann passt das.


Delphi-Quelltext
1:
until (Startkapital=0or (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 user profile iconNarses: 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 user profile iconNarses: 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/100else Startkapital:=Startkapital; 


until 
(Startkapital=0or (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 user profile iconNarses: 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>                    

user profile iconAnna123 hat folgendes geschrieben Zum zitierten Posting springen:
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:

user profile iconAnna123 hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
2:
readln(Zinsen); 
readln;
Das zweite Readln bedeutet, dass man noch einmal Return drücken muss, warum? ;-)

user profile iconAnna123 hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
2:
if (m mod 12) = 0 then 
Startkapital:=Startkapital+Startkapital*(Zinsen/100else 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 user profile iconNarses: 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 ;-)