Convertir Arábigos a Romanos con PHP

Inicio ¿Sidebar? RSS @MisAlgoritmos at Twitter

Convertir Arábigos a Romanos con PHP

Hola a todos :) En este artículo les traigo dos diagramas de flujo, su pseudocódigo, dos ejemplos en C, y lo más importante, mi clase en PHP basada en los diagramas. Cabe destacar que la solución planteada es muy sencilla, y además con la explicación del autor de los diagramas (JL), lo hace ver aún más fácil.

Primero que nada, los diagramas (Aunque, vale la pena ver esto directamente en la página de JL por qué está más completo y explicado), y después la clase.

Diagrama de flujo, algoritmo y pseudocódigo para convertir un número Arábigo a Romano

Inicio
Dadas las tablas Romanos[] y Valores[]
Pedir: A
Hacer Resultado = ""
  Ciclo en i para cada elemento de Romanos
    Mientras Valores<i> < = A hacer
      Resultado = Resultado + Romanos<i>
      A = A - Valores<i>
   Fin-Mientras
  Fin-Ciclo
Mostrar Resultado
Fin

Diagrama de flujo y Pseudocódigo para convertir de Romanos a Arábigos

Inicio
Previa definición de ValorRomano()
Obtener: R como número Romano
Resultado = 0
Max = Longitud de R
Ciclo en i hasta Max - 1
     C = Caracter i de R
     C2 = Caracter i+1 de R
     si ValorRomano(C)< ValorRomano(C2) entonces
         Resultado = Resultado - ValorRomano(C)
     sino
          Resultado = Resultado + ValorRomano(C)
     Fin-si
Fin-Ciclo
Resultado = Resultado + ValorRomano(C2)
Mostrar Resultado
Fin

La clase

El primer paso para trabajar con la clase es incluirla (y claro, previamente descomprimirla)

  1. include('romanos.class.php');

El segundo paso: utilizarla. Creamos una instancia pasando como parámetro el valor a convertir sin importar si es Romano o Arábigo. La clase determina qué tipo de valor fue introducido.

Aquí un ejemplo sencillo:

  1. /*
  2.  * Inicializamos la clase con un valor en Románo
  3.  */
  4. $a2r = new romanos('MXM');//Valor incorrecto que la clase corrige internamente
  5. echo $a2r->getArabigo().', ';
  6. echo $a2r->getRomano();

Su salida:

  1. 1990, MCMXC

En el ejemplo anterior, el número Romano MXM es incorrecto, y La forma correcta de representarlo es MCMXC. Razón por la cual la clase regresa el valor de esta forma (DCCC).

Si quisiéramos representar el valor 800, lo correcto sería escribirlo así DCCC pero, si intentamos escribirlo así CCCCCCCC la clase regresa el valor en Romano con la nomenclatura correcta.

  1. $a2r = new romanos('CCCCCCCCCCCCC');
  2. echo $a2r->getArabigo().', ';
  3. echo $a2r->getRomano();

Su salida:

  1. 800, DCCC

Por último, un ejemplo que muestra todos los valores posibles hasta el 5000 en Arábigo y romano.

  1. for($i=1; $i< =5000; $i++){
  2.       $a2r = new romanos($i);
  3.       echo $a2r->getArabigo().', ';
  4.       echo $a2r->getRomano().'<br />';
  5.    }

Y Aquí su salida o ejemplo.

La creación de la clase y este artículo están basados en los artículos que Juan Luís escribió en Su sitio Web.

Todos sus comentarios, dudas o sugerencias que este artículo les haya provocado son bienvenidos ;-) Bueno,... ya me pongo a trabajar que estoy con el Theme viewer para Gelato CMS u_U ...

uff, y antes de que lo olvide: Los dos ejemplos en C:

  1. http://ejemplos.mis-algoritmos.com/archives/158
  2. http://ejemplos.mis-algoritmos.com/archives/160
There are 5 comments. for this entry.