
Conversión de número decimales a romanos
PHP
Publicado el 14 de Febrero del 2002 por Administrador (718 códigos)
17.482 visualizaciones desde el 14 de Febrero del 2002
Función para convertir números decimales a romanos

















/* ------------------------------------------------------- *//* -- FUNCIÓN QUE CONVIERTE NUMEROS DECIMALES A ROMANOS -- *//* --------- http://www.lawebdelprogramador.com ---------- *//* --------------------------------------------------------*/function decimal_romano($numero)
{$numero=floor($numero);
if($numero<0)
{$var="-";
$numero=abs($numero);
} # Definición de arrays
$numerosromanos=array(1000,500,100,50,10,5,1);
$numeroletrasromanas=array("M"=>1000,"D"=>500,"C"=>100,"L"=>50,"X"=>10,"V"=>5,"I"=>1);
$letrasromanas=array_keys($numeroletrasromanas);
while($numero)
{for($pos=0;$pos<=6;$pos++)
{$dividendo=$numero/$numerosromanos[$pos];
if($dividendo>=1)
{$var.=str_repeat($letrasromanas[$pos],floor($dividendo));
$numero-=floor($dividendo)*$numerosromanos[$pos];
} } } $numcambios=1;while($numcambios)
{ $numcambios=0;for($inicio=0;$inicio<strlen($var);$inicio++)
{$parcial=substr($var,$inicio,1);
if($parcial==$parcialfinal&&$parcial!="M")
{$apariencia++;
}else{
$parcialfinal=$parcial; $apariencia=1; } # Caso en que encuentre cuatro carácteres seguidos iguales.
if($apariencia==4)
{$primeraletra=substr($var,$inicio-4,1);
$letra=$parcial;$sum=$primernumero+$letternumero*4;
$pos=busqueda($letra,$letrasromanas);
if($letrasromanas[$pos-1]==$primeraletra)
{$cadenaant=$primeraletra.str_repeat($letra,4);
$cadenanueva=$letra.$letrasromanas[$pos-2];
}else{
$cadenaant=str_repeat($letra,4);
$cadenanueva=$letra.$letrasromanas[$pos-1];
}$numcambios++;
$var=str_replace($cadenaant,$cadenanueva,$var);
} } }return $var;
}function busqueda($cadenanueva,$array)
{foreach($array as $contenido)
{if($contenido==$cadenanueva)
{return $pos;
}$pos++;
}}
Comentarios sobre la versión: Versión 1 (0)
No hay comentarios