Covertir Números decimales a Romanos en PHP
En esta oportunidad, nos daremos la tarea de realizar mediante una funcion el cambio de numeros decimales a numeros romanos. espero que les sea degran utilidad, bueno sin más palabras aqui esta el codigo :
<?
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++;
} }
?>
Autor: Blasten
http://www.blasten.com/contenidos/18914
Usuarios que han visto este tema también han visto...
- Subir archivos al servidor
- Bucle while, Cómo funciona?
- Días online
- Reemplazar Texto en la Base de Datos
- Mostrar la fecha de hoy en español con PHP
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.