RosettaCodeData/Task/Equilibrium-index/Pascal/equilibrium-index-1.pascal

35 lines
896 B
Plaintext

Program EquilibriumIndexDemo(output);
function ArraySum(list: array of integer; first, last: integer): integer;
var
i: integer;
begin
ArraySum := 0;
for i := first to last do // not taken if first > last
ArraySum := ArraySum + list[i];
end;
procedure EquilibriumIndex(list: array of integer; offset: integer);
var
i: integer;
begin
for i := low(list) to high(list) do
if ArraySum(list, low(list), i-1) = ArraySum(list, i+1, high(list)) then
write(offset + i:3);
end;
var
{** The base index of the array is fully taken care off and can be any number. **}
numbers: array [1..7] of integer = (-7, 1, 5, 2, -4, 3, 0);
i: integer;
begin
write('List of numbers: ');
for i := low(numbers) to high(numbers) do
write(numbers[i]:3);
writeln;
write('Equilibirum indices: ');
EquilibriumIndex(numbers, low(numbers));
writeln;
end.