Los numeros romanos tienen, como sabrás, un uso limitado y, además, un mismo signo solo se puede repetir 3 veces seguidas; por ello este código fuente que te envio solo te convertirá correctamente hasta el 3999.
Espero te sirva de algo.
Un saludo: martin
program Convertir_arabes_a_romanos;
uses crt;
var
NumArabe, i, j : integer;
NumRomano : string;
begin
clrscr;
write('Introduce el numero arabigo: ');
readln(NumArabe);
NumRomano := '';
i := Numarabe div 1000;
case i of
1 : NumRomano := NumRomano+'M';
2 : NumRomano := NumRomano+'MM';
3 : NumRomano := NumRomano+'MMM'
end;
NumArabe := NumArabe Mod 1000;
i := NumArabe div 100;
case i of
1 : NumRomano := NumRomano+'C';
2 : NumRomano := NumRomano+'CC';
3 : NumRomano := NumRomano+'CCC';
4 : NumRomano := NumRomano+'CD';
5 : NumRomano := NumRomano+'D';
6 : NumRomano := NumRomano+'DC';
7 : NumRomano := NumRomano+'DCC';
8 : NumRomano := NumRomano+'DCCC';
9 : NumRomano := NumRomano+'CM'
end;
NumArabe := NumArabe Mod 100;
i := NumArabe div 10;
case i of
1 : NumRomano := NumRomano+'X';
2 : NumRomano := NumRomano+'XX';
3 : NumRomano := NumRomano+'XXX';
4 : NumRomano := NumRomano+'XL';
5 : NumRomano := NumRomano+'L';
6 : NumRomano := NumRomano+'LX';
7 : NumRomano := NumRomano+'LXX';
8 : NumRomano := NumRomano+'LXXX';
9 : NumRomano := NumRomano+'XC'
end;
NumArabe := NumArabe Mod 10;
case NumArabe of
1 : NumRomano := NumRomano+'I';
2 : NumRomano := NumRomano+'II';
3 : NumRomano := NumRomano+'III';
4 : NumRomano := NumRomano+'IV';
5 : NumRomano := NumRomano+'V';
6 : NumRomano := NumRomano+'VI';
7 : NumRomano := NumRomano+'VII';
8 : NumRomano := NumRomano+'VIII';
9 : NumRomano := NumRomano+'IX'
end;
textcolor(14);
gotoxy(34,12);
write(NumRomano)
end.