Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Zählschleife (https://www.delphipraxis.net/108467-zaehlschleife.html)

foerster7892 14. Feb 2008 08:05


Zählschleife
 
Delphi-Quellcode:
var
Form4: TForm4; Startguthaben, Endguthaben, Zinsen, monatlicherBetrag, Zinssatz, laufvariable: real;

implementation

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);
var b, Jahre, a: integer;
begin
  Zinsen := 0;
  Startguthaben := StrToFloat(Edit1.Text);
  zinssatz := StrToFloat(Edit2.Text);
  monatlicherBetrag := StrToFloat(Edit3.Text);
  For b := 1 to Jahre do
  begin;
    For a := 1 to (12 * Jahre) do
    begin;
      Startguthaben := Startguthaben + monatlicherBetrag;
      Zinsen := 1/12 * Startguthaben/100 * Zinssatz + Zinsen;
      Endguthaben := Zinsen + Startguthaben;
    end;
  end;
Label2.Caption := FloatToStr(Endguthaben);
Label1.Caption := FloatToStr(Zinsen);
end;
end.
Ich möchte mit dem Programm zu einem Startguthaben monatliche konstante Beiträge zahlen und die Zinsen sollen immer am ende des Jahres abgerechnet werden.
Wie kann ich das machen das die Zinsen am Ende des Jahres erst wieder dazu addiert werden das ich dann weiterrechnen kann?

bitte um hilfe

taaktaak 14. Feb 2008 08:14

Re: Zählschleife
 
Moin, Moin,

vielleicht die Zinsen in der äußeren Schleife addieren?

Delphi-Quellcode:
For b := 1 to Jahre do
  begin;
    For a := 1 to (12 * Jahre) do
    begin;
      Startguthaben := Startguthaben + monatlicherBetrag;
      Zinsen := 1/12 * Startguthaben/100 * Zinssatz + Zinsen;
      //Endguthaben := Zinsen + Startguthaben;
    end;
    Endguthaben := Zinsen + Startguthaben; // << hier?!
  end;

Xong 14. Feb 2008 08:23

Re: Zählschleife
 
Zitat:

Zitat von foerster7891
Delphi-Quellcode:
var
Form4: TForm4; Startguthaben, Endguthaben, Zinsen, monatlicherBetrag, Zinssatz, laufvariable: real;

implementation

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);
var b, Jahre, a: integer;
begin
  Zinsen := 0;
  Startguthaben := StrToFloat(Edit1.Text);
  zinssatz := StrToFloat(Edit2.Text);
  monatlicherBetrag := StrToFloat(Edit3.Text);
  For b := 1 to Jahre do
  begin; // Was soll das Semikolon? [1]
    For a := 1 to (12 * Jahre) do {  Was soll das denn?
                                     Im ersten Jahr 12, im zweiten 24, im dritten 36 [...]
                                     Durchläufe. Ist das Absicht?
                                     Außerdem ist "Jahre" nicht initialisiert! Wo wird "Jahre"
                                     ein Wert zugewiesen? }
    begin; // Was soll das Semikolon? [2]
      Startguthaben := Startguthaben + monatlicherBetrag;
      Zinsen := 1/12 * Startguthaben/100 * Zinssatz + Zinsen;
      Endguthaben := Zinsen + Startguthaben; // Die Zinsen werden jeden Monat dazu addiert!
    end;
  { Hier wäre das Ende des jeweiligen Jahres erreicht. Führe also deine Jahresendberechnungen hier aus! }
  end;
Label2.Caption := FloatToStr(Endguthaben);
Label1.Caption := FloatToStr(Zinsen);
end;
end.

LG,
Xong

taaktaak 14. Feb 2008 08:35

Re: Zählschleife
 
HIHIHI,
das mit den wachsenden Monaten/Jahr war mir gar nicht aufgefallen - bringt aber echt tolle Zinsgewinne, sollte man vielleicht so lassen!

foerster7892 14. Feb 2008 08:38

Re: Zählschleife
 
Delphi-Quellcode:
var
  Form4: TForm4; Startguthaben, Endguthaben, Zinsen, monatlicherBetrag, Zinssatz, laufvariable: real;

implementation

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);
var a, b, Jahre: integer;
begin
  Zinsen := 0;
  Startguthaben := StrToFloat(Edit1.Text);
  zinssatz := StrToFloat(Edit2.Text);
  monatlicherBetrag := StrToFloat(Edit3.Text);
  Jahre := StrToInt(Edit4.Text);
  For b := 0 to Jahre do
  begin;
    For a := 1 to 12 do
    begin;
      Startguthaben := Startguthaben + monatlicherBetrag;
      Zinsen := 1/12*Startguthaben/100*Zinssatz+Zinsen;
    end;
  Endguthaben := Zinsen + startguthaben;
  end;
  Label2.Caption := FloatToStr(Endguthaben);
  Label1.Caption := FloatToStr(Zinsen);
end;
end.
So jetzt ist es soweit fertig
ich war doch noch garnicht fertig ich hab doch auch noch überlegt aber ein kleines problem gibt es noch wenn ich 0 Jahre eingebe dann hab ich das Problem das er die Schleife trotzdem einmal durchlaufen lässt
was kann ich tun

und danke schon mal

DeddyH 14. Feb 2008 08:39

Re: Zählschleife
 
Delphi-Quellcode:
For b := 1 to Jahre do

foerster7892 14. Feb 2008 09:00

Re: Zählschleife
 
danke
aber kannst du mir noch sagen wieso 0 to 0 nicht geht weil eigentlich dürfte er da ja auch nichts machen?

DeddyH 14. Feb 2008 09:01

Re: Zählschleife
 
Wieso sollte er nichts machen?

foerster7892 14. Feb 2008 09:22

Re: Zählschleife
 
es liegt doch kein schritt zwischen 0 und 0 deshalb dürfte die schleife doch auch 0 mal durchgeführt werden? wieso ist das nicht so

Nikolas 14. Feb 2008 09:29

Re: Zählschleife
 
Du kannst die Anweisung for x=n to m auch so lesen: Für jedes (natürliche) Element in dem Intervall [n,...,m] mache folgendes:...

Damit ist auch klar, dass eine Schleife for i:=3 to 2 nicht ausgeführt wird. Hier geht es um Element im Intervall [3,2] und dieses ist nach Definition Null. (es gibt keine Elemente mit 3<x<2, da "<" als totale Ordnung transitiv ist).

Und dann ist genau die Null in der Menge [0]. Alternativ auch so:
Setzt die Zählvariable auf die untere G, wenn sie dann noch nicht größer als die oberere Schranke ist, führe die Schleife aus, inkrementiere den Zähler, und vergleiche wieder mit der oberen Grenze.

taaktaak 14. Feb 2008 09:32

Re: Zählschleife
 
wenn du for i:=1 to 2 do schreibst, dann erwartest du doch, dass die Schleife 2x durchlaufen wird?! Mit for i:=1 to 1 do wird die Schleife 1x durchlaufen; und das ist dann mit for i:=0 to 0 do ebenso

// edit: Saubere Erklärung meines Vorgängers! Erinnert mich an die Mengenlehre in der Schule. Wir haben sie damals nicht gemocht, aber sie hilft tatsächlich vieles zu verstehen

foerster7892 14. Feb 2008 09:35

Re: Zählschleife
 
Vielen dank an alle die mir geholfen haben!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!! :dp: :coder:

Xong 14. Feb 2008 10:45

Re: Zählschleife
 
Zitat:

Zitat von taaktaak
Erinnert mich an die Mengenlehre in der Schule. Wir haben sie damals nicht gemocht, aber sie hilft tatsächlich vieles zu verstehen

Schule?! Tz! Mengenlehre an ´ner Uni ist geil. =)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 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