(*lunes, 12 de mayo de 2008, 10:55:23*)
(* Rombus Evil Bones *)
program rom;
const
B = 10;
var
num, cont, i : integer;
(*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*)
procedure numRomano (a, b, c: char; num: integer);
begin
case num of
9 : write(a,c);
5..8: begin
write (b);
for i:= 6 to num do
write (a);
end;
4 : write (a, b);
1..3: for i:= 1 to num do
write (a);
end;
end;
(*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*)
procedure defragmenta(num : integer);
begin
if num < B then
begin
case cont of
1 : numRomano ('I','V','X',num);
2 : numRomano ('X','L','C',num);
3 : numRomano ('C','D','M',num);
4 : numRomano ('M',' ',' ',num);
end;
cont := cont - 1;
end
else
begin
cont := cont + 1;
defragmenta(num div B);
defragmenta(num MOD B);
end;
end;
(*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*)
begin
cont := 1;
write('Ingrese un num: ');
readln(num);
defragmenta(num);
readln;
end.