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
- Descargar Clase V.1.
- Primera versión
El primer paso para trabajar con la clase es incluirla (y claro, previamente descomprimirla)
- 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:
- /*
- * Inicializamos la clase con un valor en Románo
- */
- $a2r = new romanos('MXM');//Valor incorrecto que la clase corrige internamente
- echo $a2r->getArabigo().', ';
- echo $a2r->getRomano();
Su salida:
- 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.
- $a2r = new romanos('CCCCCCCCCCCCC');
- echo $a2r->getArabigo().', ';
- echo $a2r->getRomano();
Su salida:
- 800, DCCC
Por último, un ejemplo que muestra todos los valores posibles hasta el 5000 en Arábigo y romano.
- for($i=1; $i< =5000; $i++){
- $a2r = new romanos($i);
- echo $a2r->getArabigo().', ';
- echo $a2r->getRomano().'<br />';
- }
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.
- Convertir números Romanos a Arábigos (Explicación, pseudocódigo y Diagrama de Flujo )
- Diagrama de flujo, algoritmo y pseudocódigo para convertir un número a Romano
- Números Romanos
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:
Victor De la Rocha
2007-10-14 00:18:47
Ya está corregido. :)
Gran capullo
2010-04-13 23:03:59
Esta es la misma gilipollada que el ticus joder que me cago en la puta
que te den....
Fingerling
2010-08-23 19:46:30
Este algoritmo es una mierda y una vil copia de ticus visiten el website que mañana corregire este problemita