Mit fpc direkte, iteraive, rekursive Funktion darstellen.
Von: count zero (2009.count.zero.nntp@gmail.com) [Profil]
Datum: 19.03.2009 22:23
Message-ID: <slrngs5dtm.4ch.2009.count.zero.nntp@localhost.localdomain>
Newsgroup: de.comp.lang.pascal
Datum: 19.03.2009 22:23
Message-ID: <slrngs5dtm.4ch.2009.count.zero.nntp@localhost.localdomain>
Newsgroup: de.comp.lang.pascal
Ist Folgendes nach einmaligem
(maximal zweimaligem) lesen
(leicht) verständlich?
Program Zinseszins;
// fpc Zinseszins.pas
(*
Demonstation von unmittelbarer, sich wiederholender, sich aufrufender
Funktion.
Falls möglich wird als Lösung
die direkte Funktion bevorzugt,
dann die iterative Funktion,
und am Schluss die rekursive Funktion.
*)
uses math; // Funktion x^y; power(x,y)
var
Geld: Currency;
Zins: real; // Zins als % angeben
Zinsanzahl: byte;
procedure eingabe;
begin
// Noch offen Bereich der Eingabe prüfen.
writeln('Der Punkt ist das Dezimaltrennzeichen.');
write('Anfangskapital = '); readln(Geld);
write('Zins in % = ' ); readln(Zins);
write('Anzahl der Zinsen von von 0 bis 255 = '); readln(Zinsanzahl);
end;
function endkapital(K0:currency; p:real; n:byte): Currency;
begin
endkapital:=K0*power(1+p/100, n);
end;
function endkapital_iterativ(K0:currency; p:real; n:byte): Currency;
var
i: byte;
begin
endkapital_iterativ:=K0; //Anfagswert
for i:=n downto 1 do //Schleife
endkapital_iterativ:=endkapital_iterativ*(1+p/100); //iterieren
end;
function endkapital_rekursiv(K0:currency; p:real; n:byte): Currency;
begin
endkapital_rekursiv:=K0;
//Anfangswert
if n>=1 then
//Abbruchbedingung
endkapital_rekursiv:=endkapital_rekursiv(K0, p, n-1)*(1+p/100);
//rekursieren
end;
begin
writeln;
eingabe;
writeln('------------------------------------------------------------------------');
writeln('In einem Zug ausgerechnet');
writeln(endkapital(Geld, Zins, Zinsanzahl):15:4);
writeln('Geld[Zinsanzahl] := Geld[0]*(1+Zins/100)^Zinsanzahl');
writeln('------------------------------------------------------------------------');
writeln('Als iterative Schleife mit "for downto do" gerechnet.');
writeln('Von Zinsanzahl = ', Zinsanzahl, ' hinunter bis 1.');
writeln(endkapital_iterativ(Geld, Zins, Zinsanzahl):15:4);
write('Geld[Zinszahl] := Geld[Zinsanzahl]*(1+Zins/100)');
writeln(' wiederholte sich ', Zinsanzahl, ' mal.');
writeln('------------------------------------------------------------------------');
writeln('Als rekursive Funktion geschrieben.');
writeln('Von Zinsanzahl = ', Zinsanzahl, ' hinunter bis 1.');
writeln(endkapital_rekursiv(Geld, Zins, Zinsanzahl):15:4);
write('Geld[Zinsanzahl] := Geld[Zinsanzahl-1]*(1+Zins/100)');
writeln(' rief sich ', Zinsanzahl, ' mal auf.');
writeln('------------------------------------------------------------------------');
end.
--
ln -s /dev/cerebro /dev/null is full
Was ich denke ist leer und es quillt über.
Pseudonym...count.zero
[ Auf dieses Posting antworten ]Antworten
- Markus Wichmann (20.03.2009 13:21)
- Sieghard Schicktanz (20.03.2009 23:13)
