Delphi-PRAXiS
Seite 1 von 2  1 2      

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:08 Uhr.
Seite 1 von 2  1 2      

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