![]() |
Zinseszins-Berechnung
Hallo,
ich schreibe am Donnerstag eine Kursarbeit in Informatik. Leider fehlt mein Lehrer meistens bzw. erklärt uns nichts, weshalb ich nun nicht weiß, was an folgenden Programmen falsch ist. Vielen Dank, sollte sich einer erbarmen und die Fehler korrigieren. Aufgabe war: "Schreibe ein Programm, das bei Eingabe von Startkapital, Zinssatz, Zielkapital die Laufzeit einer Anlage (von Geld) ausgibt. Formuliere das Programm mit While und Repeat."
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin x := StrToFloat(Edit1.Text); Zinssatz := StrToFloat(Edit2.Text); Zielkapital := StrToFloat(Edit3.text); repeat X := X * (Zinssatz/100*1); Memo1.Lines.Add(FloatToStr(x)); until X >= Zielkapital; Laufzeit := Memo1.Lines.Count; end; |
AW: Was ist falsch?
Erstens ist das kein Programm (nur ein Ausschnitt) und wieso glaubst Du, dass es falsch ist?
|
AW: Was ist falsch?
Habe nur noch die ganzen Variablen als Real definiert (außer Laufzeit, das mit Integer).
In der Memo spuckt mir das Programm nur ganz viele Nullen aus... |
AW: Was ist falsch?
Moin,
sei bitte so gut und gib Deinem Beitrag einen aussagekräftigen Titel. ;-) (Den Stand jetzt ist wenigstens der falsch) Allgemein hat sich bei diesen Problemen bewährt, die Lösung "umgangssprachlich" zu formulieren und zwar so konkret, dass Du anhand dieser Beschreibung mit Stift und Papier zur korrekten Lösung kommen würdest. Danach weiß man i.A. sehr fix, was im Programm falsch läuft. |
AW: Was ist falsch?
Hi,
entschuldigung, aber wo ändert man den Titel? Habe nichts finden können. Über so einen Lösungsansatz wäre ich noch glücklicher... |
AW: Was ist falsch?
Zitat:
Besser wäre:
Code:
X := X * (Zinssatz/100 + 1);
|
AW: Was ist falsch?
Leichsinnsfehler :cry: Aber vielen vielen Dank!
|
AW: Zinseszins-Berechnung
Du benutzt kein
Delphi-Quellcode:
, also ist die Aufgabe nicht richtig beantwortet.
while
|
AW: Zinseszins-Berechnung
Ich verstehe allerdings nicht, was für einen Mehrwert das bringen soll, bzw. wie man dort noch while einbinden soll.
Ich hätte jetzt noch geschrieben:
Code:
Aber das ginge ja auch ohne While-Schleife? Beziehungsweise mit ner einfachen If...then-Struktur
procedure TForm1.Button1Click(Sender: TObject);
begin x := StrToFloat(Edit1.Text); Zinssatz := StrToFloat(Edit2.Text); Zielkapital := StrToFloat(Edit3.text); while (x< Zielkapital) do begin repeat X := X * (Zinssatz/100 + 1); Memo1.Lines.Add(FloatToStr(x)); until X >= Zielkapital; end; Laufzeit := Memo1.Lines.Count; Button1.Caption:= IntToStr(Laufzeit) + ' Monate'; |
AW: Zinseszins-Berechnung
Unser Lehrer damals hatte uns eine ähnliche Aufgabe gestellt und wollte dabei auf den Unterschied zwischen "while" und "repeat" hinaus. Wir sollten damals eine Lösung tatsächlich auf verschiedene Arten implementieren.
Hier nun einen Weg finden zu wollen, der auf Teufel komm raus beide Schleifen-Typen in ein und demselben Code-Schnipsel berücksichtigt, hielte ich für wenig hilfreich. |
AW: Zinseszins-Berechnung
Das habe ich auch nicht verstanden. Sollte so eine Aufgabenstellung in der Arbeit drankommen, mache ich eben einmal mit While und einmal mit Repeat. Vielleicht dann auch noch ne Begründung, warum das Schreiben des Codes mit zwei Schleifentypen unnötig ist... Ich hoffe mal, dass das reichen würde
|
AW: Zinseszins-Berechnung
Einen Mehrwert würde es aber bringen, wenn du deinen Code in eine Funktion auslagern würdest:
Delphi-Quellcode:
Im Übrigen macht dieser Code exakt das, was in der Aufgabe steht. Denn dort sehe ich nichts von der Ausgabe der Zwischenschritte ;)
function ZinsesZinsBerechnungLaufzeit( const StartKapital, ZinsSatz, ZielKapital: Currency ) : Integer;
var AktuellesKapital: Currency; Laufzeit: Integer; begin AktuellesKapital := StartKapital; Laufzeit := 0; while AktuellesKapital < ZielKapital do begin AktuellesKapital := AktuellesKapital + ( AktuellesKapital * Zinssatz ) / 100; Inc( Laufzeit ); end; Result := Laufzeit; end; procedure TForm1.Button1Click(Sender: TObject); begin LaufzeitLabel.Caption := IntToStr( ZinsesZinsBerechnungLaufzeit( StrToCurr( StartKapitalEdit.Text ), StrToCurr( ZinsSatzEdit.Text ), StrToCurr( ZielKapitalEdit.Text ) ) ); end; Ein Umbau auf
Delphi-Quellcode:
sollte problemlos möglich sein. Allerdings musst du auf die Kopf-Bedingung achten ;)
repeat
|
AW: Zinseszins-Berechnung
Habe im Internet davon auch schon gelesen. Allerdings sind wir wegen ständigen Ausfällen wegen "Krankheit" des Lehrers noch nicht so weit gekommen, wodurch dies auch nicht verlangt ist.
Aber natürlich wäre es verdammt souverän, nach paar Stunden Unterricht solche Codes rauszuhauen :D |
AW: Zinseszins-Berechnung
Zitat:
Und für eine vernünftige Namesgebung sollte eigentlich kein Unterricht nötig sein ;) |
AW: Zinseszins-Berechnung
Ist wirklich viel übersichtlicher :) Ich mache es dann in der Kursarbeit nach den vom Lehrer gegebenen Methoden. Sollte ich noch Zeit haben, kann ich ja nach etwas nach dieser Methode schreiben. Extrapunkte sind immer gut:-D
|
AW: Zinseszins-Berechnung
Zitat:
(Bitte nicht schlagen, ist mehr als 40 Jahre her, daß ich mich damit beschäftigt habe) Gruß K-H |
AW: Zinseszins-Berechnung
Zitat:
Beides Werte die durchaus vorkommen können. Um eine Endlosschleife zu vermeiden, sollte geprüft werden, ob die Zinsen = 0 sind. Weiterhin sollten die angefallenen Zinsen auf 2 Stellen gerundet werden, denn Banken schreiben keine Zinsen gut, wenn der (gerundete) Zinsertrag < 1 Cent ist. |
AW: Zinseszins-Berechnung
Ich muss die Aufgabe nicht abgeben ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 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