program IncrementArray;
const
MaxSize = 64;
type
IntArray = array[1..MaxSize] of Integer;
procedure IncrementByOne(var digits: IntArray; var size: Integer);
var
i, carry: Integer;
begin
carry := 1;
for i := size downto 1 do
begin
digits[i] := digits[i] + carry;
if digits[i] = 10 then
begin
digits[i] := 0;
carry := 1;
end
else
begin
carry := 0;
Break;
end;
end;
if carry = 1 then
begin
// Shift all elements to the right
for i := size downto 1 do
digits[i + 1] := digits[i];
digits[1] := 1;
Inc(size);
end;
end;
var
digits: IntArray;
size, i: Integer;
begin
// Initialize the array with {9, 9, 9}
size := 3;
digits[1] := 9;
digits[2] := 9;
digits[3] := 9;
IncrementByOne(digits, size);
Write('Result: ');
for i := 1 to size do
Write(digits[i], ' ');
Writeln;
end.
(*
run:
Result: 1 0 0 0
*)