Pascal/Turbo Pascal - PROGRAMA EN FREEPASCAL PARA CONVERTIR NUMEROS EN BASE 10 A ROMANOS

   
Vista:

PROGRAMA EN FREEPASCAL PARA CONVERTIR NUMEROS EN BASE 10 A ROMANOS

Publicado por carlos carlos-heroliv@hotmail.com (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;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

PROGRAMA EN FREEPASCAL PARA CONVERTIR NUMEROS EN BASE 10 A ROMANOS

Publicado por ramon (2072 intervenciones) el 19/04/2012 19:18:58
{A qui tienes tu programa funcionando}

program romanos;
uses
crt;

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;
end;

PROCEDURE MostrarNumRomanos({E} num: integer);
BEGIN
RepetirLetra('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;

begin
clrscr;
MostrarNumRomanos(1947);
readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar