PROGRAMA EN FREEPASCAL PARA CONVERTIR NUMEROS EN BASE 10 A ROMANOS
Publicado por carlos (12 intervenciones) el 16/04/2012 20:42:30
Hola, necesito ayuda en como convertir numeros en base 10 a romanos. He diseñado los procedimientos que estan a continuacion pero algo falla, y nose como terminar el programa. Me podeis ayudar a completarlo? Gracias
PROCEDURE RepetirLetra(letra:char; nVeces:integer);
VAR i: integer;
BEGIN
For i=1 To nVeces Do write (letra)
END;
PROCEDURE MostrarCifraRomana(digito:integer; uno, cinco, diez:char);
BEGIN
Case digito Of
1,2,3: RepetirLetra(uno, digito);
4: write (uno,cinco);
5,6,7,8: Begin write(cinco); RepetirLetra(uno,digito-5) End;
9: write(uno,diez)
END;
PROCEDURE MostrarNumRomanos({E} num: integer);
BEGIN
RepetriLetra ('M',num div 1000);
MostrarCifraRomana ((num div 100) mod 10, 'C','D','M');
MostrarCifraRomana ((num div 10) mod 10, 'X','L','C');
MostrarCifraRomana ((num mod 10),'I','V','X');
END;
PROCEDURE RepetirLetra(letra:char; nVeces:integer);
VAR i: integer;
BEGIN
For i=1 To nVeces Do write (letra)
END;
PROCEDURE MostrarCifraRomana(digito:integer; uno, cinco, diez:char);
BEGIN
Case digito Of
1,2,3: RepetirLetra(uno, digito);
4: write (uno,cinco);
5,6,7,8: Begin write(cinco); RepetirLetra(uno,digito-5) End;
9: write(uno,diez)
END;
PROCEDURE MostrarNumRomanos({E} num: integer);
BEGIN
RepetriLetra ('M',num div 1000);
MostrarCifraRomana ((num div 100) mod 10, 'C','D','M');
MostrarCifraRomana ((num div 10) mod 10, 'X','L','C');
MostrarCifraRomana ((num mod 10),'I','V','X');
END;
Valora esta pregunta


0