• Domingo 22 de Diciembre de 2024, 21:32

Autor Tema:  De Romanos a Decimal, aporte para los programadores  (Leído 1210 veces)

Rombus

  • Miembro MUY activo
  • ***
  • Mensajes: 105
  • Nacionalidad: ar
    • Ver Perfil
    • http://myspace.com/punkrecycle
De Romanos a Decimal, aporte para los programadores
« en: Martes 23 de Septiembre de 2008, 00:16 »
0
Hola gente!

estaba visitando el subforo de C y me hicieron recordar un codigo que hice el año pasado en pascal de pasar numeros de romano a decimal,
me acuerdo que lo optimice bastante y quedo bastante corto.

ya que lo encontre queria compartirlo con ustedes, capaz a alguno le venga bien

este es el codigo:


Código: Text
  1. (*lunes, 12 de mayo de 2008, 10:55:23*)
  2. (* Rombus Evil Bones                 *)
  3. program rom;
  4. const
  5.     B = 10;
  6. var
  7.     num, cont, i : integer;
  8. (*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*)
  9. procedure numRomano (a, b, c: char; num: integer);
  10. begin
  11.     case num of
  12.         9 : write(a,c);    
  13.         5..8: begin
  14.                 write (b);
  15.                 for i:= 6 to num do
  16.                     write (a);
  17.               end;
  18.         4 : write (a, b);
  19.         1..3: for i:= 1 to num do
  20.                 write (a);  
  21.     end;
  22. end;
  23. (*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*)
  24. procedure defragmenta(num : integer);
  25. begin
  26.     if num < B then
  27.         begin
  28.             case cont of
  29.                 1 : numRomano ('I','V','X',num);
  30.                 2 : numRomano ('X','L','C',num);
  31.                 3 : numRomano ('C','D','M',num);
  32.                 4 : numRomano ('M',' ',' ',num);
  33.             end;
  34.             cont := cont - 1;
  35.         end
  36.     else
  37.         begin
  38.             cont := cont + 1;
  39.             defragmenta(num div B);
  40.             defragmenta(num MOD B);
  41.         end;
  42. end;
  43. (*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*)
  44. begin
  45.     cont := 1;
  46.     write('Ingrese un num: ');  
  47.     readln(num);
  48.     defragmenta(num);
  49.     readln;
  50. end.
  51.  
  52.  


saludos!