nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

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

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