program DecimalToBase12;
// Reverses a string manually
function ReverseString(s: String): String;
var
i: Integer;
reversed: String;
begin
reversed := '';
for i := Length(s) downto 1 do
reversed := reversed + s[i];
ReverseString := reversed;
end;
// Converts a decimal number to base-12 and returns it as a string
function DecimalToBase12(decimalNumber: Integer): String;
const
digits: array[0..11] of Char = ('0','1','2','3','4','5','6','7','8','9','A','B'); // Base-12 digits (A = 10, B = 11)
var
base12: String;
remainder: Integer;
begin
if decimalNumber = 0 then
begin
DecimalToBase12 := '0';
Exit;
end;
base12 := '';
while decimalNumber > 0 do
begin
remainder := decimalNumber mod 12;
base12 := base12 + digits[remainder];
decimalNumber := decimalNumber div 12;
end;
// Reverse to get the correct order
DecimalToBase12 := ReverseString(base12);
end;
var
decimalNumber: Integer;
base12Number: String;
begin
decimalNumber := 100;
base12Number := DecimalToBase12(decimalNumber);
WriteLn('Base-12 representation: ', base12Number);
decimalNumber := 19621;
base12Number := DecimalToBase12(decimalNumber);
WriteLn('Base-12 representation: ', base12Number);
end.
(*
run:
Base-12 representation: 84
Base-12 representation: B431
*)