Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/08/2010, 20:44
Avatar de mortiprogramador
mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 15 años, 3 meses
Puntos: 214
Códigos - Reto Romanos

Alcalina

Código PHP:
Ver original
  1. <?php
  2. function romanNumber($num) {
  3.   if ($num<1 || $num>10000) {return "&infin;";}
  4.   else
  5.   {
  6.     // Cadena a devolver
  7.     $resultado = "";
  8.     // Eliminamos decimales
  9.     $num = intval($num);
  10.     // Creamos el array con los numeros romanos, lo escribimos de mayor a menor porque orden de miles,centenas,decenas,unidades.
  11.     $romanos = array (1000=>"M",900=>"CM",500=>"D",400=>"CD",100=>"C",90=>"XC",50=>"L",40=>"XL",10=>"X",9=>"IX",5=>"V",4=>"IV",1=>"I");
  12.     // Vamos recorriendo el vector con el numero que nos han pasado
  13.     foreach ($romanos as $numero => $romano)
  14.     {
  15.       // Dividimos para encontrar coincidencias entre el numero que nos han pasado y el vector, y eliminamos decimales
  16.       $coincidencias = intval($num/$numero);
  17.       // Escribimos en el resultado el numero de coincidencias que hemos encontrado en el numero
  18.       $resultado .= str_repeat($romano, $coincidencias);
  19.       // Le restamos el numero ya traspasado a romano
  20.       $num = $num % $numero;
  21.     }
  22.     // Devolvemos el resultado
  23.     return $resultado;
  24.   }
  25. }
  26. ?>
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com