39 lines
955 B
ObjectPascal
39 lines
955 B
ObjectPascal
program reduceApp;
|
|
|
|
{$modeswitch classicProcVars+}
|
|
|
|
{Works in many modes with Free Pascal Compiler:
|
|
fpc, objfpc, delphi, macpas, iso, extendedpascal}
|
|
|
|
type
|
|
Num = LongInt; // this can be changed to Real if desired
|
|
BinaryFunc = function(a, b: Num): Num;
|
|
|
|
function add(x, y: Num): Num; begin add := x + y; end;
|
|
function sub(x, y: Num): Num; begin sub := x - y; end;
|
|
function mul(x, y: Num): Num; begin mul := x * y; end;
|
|
|
|
function reduce(func: BinaryFunc; a: array of Num): Num;
|
|
var
|
|
i: Integer;
|
|
answer: Num;
|
|
begin
|
|
answer := a[low(a)];
|
|
for i := low(a)+1 to high(a) do
|
|
answer := func(answer, a[i]);
|
|
reduce := answer; // return answer
|
|
end;
|
|
|
|
VAR
|
|
// dynamic array
|
|
ma: array of Num;
|
|
// static arrays
|
|
mb: array[1..9] of Num = (1,2,3,4,5,6,7,8,9);
|
|
mc: array[0..8] of Num = (1,2,3,4,5,6,7,8,9);
|
|
BEGIN
|
|
ma := [1,2,3,4,5,6,7,8,9];
|
|
writeln(reduce(add, ma));
|
|
writeln(reduce(sub, mb));
|
|
writeln(reduce(mul, mc));
|
|
END.
|