// Tetszőleges (2-32) alapú számrendszerbe való
// átváltást megvalósító program, ahol az
// osztási maradékokat dinamikus tömbben tároljuk
program dintomb;
{$APPTYPE CONSOLE}
uses
SysUtils,Dialogs;

var alap, szam : int64;
i : integer;
verem : array of byte;
vm : integer;
jegyek : array[0..31] of char;
begin
// a lehetséges számjegyeket tartalmazó tömb feltöltése:
for i:=0 to 9 do jegyek[i]:= chr(48 + i);
for i:=10 to 31 do jegyek[i]:= chr(55 + i);

// a program adatainak beolvasása:
write('Kerem a szamrendszer alapjat:', #9);
readln(alap);
if not (alap in [2..32]) then
begin
ShowMessage('Csak 2..32 közötti érték használható');
halt;
end;
write('Az atvaltando szam:', #9#9);
readln(szam);
// a maradékok elhelyezése a veremben helyfoglalással:
SetLength(verem,0);
while szam<>0 do
begin
vm := length(verem);
SetLength(verem, vm+1); // A verem méretének változtatása
verem[vm] := szam mod alap;
szam:= szam div alap;
end;
// a szám kiírása a veremből történő visszaolvasással
write('A(z) ', alap:2, ' szamrendszerbeli alak:', #9);
for i:=length(verem)-1 downto 0 do
write(jegyek[verem[i]]:1);
writeln(#13#13);
// a dinamikus tömb felszabadítása
Setlength(verem,0);
readln;
end.