![]() |
Repeat-Schleife zu einem Beispiel
Hallo!
Wir haben in der Schule mit Delphi angefangen und schon verlangt unser Lehrer, eine Repeat-Schleife zum folgendem Beispiel zu machen!: Nehmen wir mal an, eine Frau hat 2000€ auf ihrem Konto und jeden Monat werden 4% verzinst. Nach wievielen Jahren hat sie den doppelten Betrag? Nun sollen wir zu dieser Aufgabe eine Repeat-Schleife reinbringen. Mir ist schon klar, was eine Schleife ist, aber ich verstehe nicht, wie man es lösen soll. :( Auch den Befehl mit repeat-until verstehe ich nicht so recht :( Könnt ihr mir helfen? Dankeschön im Vorraus :angel: |
Re: Repeat-Schleife zu einem Beispiel
Wieso nehmt ihr nicht while? Egal.
Delphi-Quellcode:
EDIT: Delphi-Tag korrigiert.
procedure Zinsrechnung;
var guthaben: Extended; jahre: Cardinal; begin guthaben:=2000; jahre:=0; repeat inc(jahre); guthaben:=1.04*guthaben; until guthaben>=4000; showmessage('Nach '+inttostr(jahre)+' Jahren verdoppelt sich das Guthaben.'); end; |
Re: Repeat-Schleife zu einem Beispiel
Erstmal vielen lieben Dank für deine superflotte Antwort :kiss:
Ich habe da noch eine Frage: Was bedeutet genau das "Extended" und "Cardinal"? |
Re: Repeat-Schleife zu einem Beispiel
Extended: Ist der Fließkommatyp mit der höchsten Genauigkeit, also z.B. 3.62432
Cardinal: Wie Integer, aber nur Positiv, also von 0-~4 Milliarden. Aber das ist doch eigentlich nicht so schwer, oder? Also ein besonders komplexer Algorithmus ist es ja wirklich nicht. (Bitte nicht falsch verstehen) |
Re: Repeat-Schleife zu einem Beispiel
Zitat:
du solltest den lösungsansatz oben dementsprechend anpassen, da er so nicht stimmt! |
Re: Repeat-Schleife zu einem Beispiel
Delphi-Quellcode:
Ändert sich ja nicht viel.
procedure Zinsrechnung;
var guthaben: Extended; monate: Cardinal; begin guthaben:=2000; monate:=0; repeat inc(monate); guthaben:=1.04*guthaben; until guthaben>=4000; showmessage('Nach '+inttostr(jahre)+' Monaten verdoppelt sich das Guthaben.'); end; |
Re: Repeat-Schleife zu einem Beispiel
Es geht auch leichter, aber halt ohne repeat:
Delphi-Quellcode:
Stinknormaler Logarithmus.
showmessage('Nach '+floattostr(logn(1.04,2))+' Jahren/Monaten verdoppelt sich das Guthaben.');
|
Re: Repeat-Schleife zu einem Beispiel
Ja, so normale Rechnungen kann ich, aber der Schwerpunkt liegt jetzt bei der Verwendung von Schleifen.
Sorry, bin aber noch ein fürchterlicher Anfänger :( Wozu bzw. wofür steht das "inc"? |
Re: Repeat-Schleife zu einem Beispiel
Hi,
![]() Inc = Inkrementieren = Hochzählen In dem Fall wird "monate" in jedem Schleifendurchlauf um 1 erhöht. Also anstatt Inc(Monate) könntest du auch Monate := Monate + 1; schreiben. MfG Marc |
Re: Repeat-Schleife zu einem Beispiel
Zitat:
stell in Delphi den Cursor auf das unbekannte Wort und drücke <F1>, dann kommt die Hilfe und du kannst es nachlesen... |
Re: Repeat-Schleife zu einem Beispiel
Zitat:
|
Re: Repeat-Schleife zu einem Beispiel
Die sind ein Überbleibsel aus der ersten Antwort.
Delphi-Quellcode:
showmessage('Nach '+inttostr(monate Div 12)+' Jahren verdoppelt sich das Guthaben.');
|
Re: Repeat-Schleife zu einem Beispiel
Delphi-Quellcode:
so wirds was!
showmessage('Nach '+inttostr((monate Div 12)+1)+' Jahren verdoppelt sich das Guthaben.');
|
Re: Repeat-Schleife zu einem Beispiel
Das ist aber zumindest unsauber. Ich habs zwar nicht nachgerechnet, aber wenn der Verdopplungszeitpunkt zufällig auf ein "volles" Jahr fallen sollte, ist dein Ergebnis falsch! Besser so:
Delphi-Quellcode:
showmessage('Nach '+inttostr(ceil(monate / 12))+' Jahren verdoppelt sich das Guthaben.');
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 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