Jensen's Device: Difference between revisions

Content added Content deleted
(Add Rust implementation)
m (Fix pascal version to run in delphi)
Line 1,137: Line 1,137:


=={{header|Pascal}}==
=={{header|Pascal}}==
<lang pascal>{$MODE objFPC}
<lang pascal>program Jensens_Device;

{$IFDEF FPC}
{$MODE objFPC}
{$ENDIF}

type
type
tTerm = function(i: integer):real;
tTerm = function(i: integer): real;

function term(i:integer):real;
function term(i: integer): real;
begin
Begin
term := 1/i;
term := 1 / i;
end;
end;


function sum(var i: LongInt;
function sum(var i: LongInt; lo, hi: integer; term: tTerm): real;
begin
lo,hi: integer;
term:tTerm):real;
Begin
result := 0;
result := 0;
i := lo;
i := lo;
while i<=hi do begin
while i <= hi do
begin
result := result+term(i);
result := result + term(i);
inc(i);
inc(i);
end;
end;
end;
end;


var
var
i : LongInt;
i: LongInt;

Begin
begin
writeln(sum(i,1,100,@term));
writeln(sum(i, 1, 100, @term));
end.
{$IFNDEF UNIX} readln; {$ENDIF}
</lang>
end.</lang>
Out
Out
<pre> 5.1873775176396206E+000</pre>
<pre> 5.1873775176396206E+000</pre>