ElTicus.com

Programación, lenguajes y recursos para programadores

**
Diagrama
Convertir números Romanos a Arábigos (Explicación, pseudocódigo y Diagrama de Flujo )
Ejemplo completo
Publicado por jl Fecha: 2007-10-04 22:18:00 Idioma: Español Tipo de documento: Diagrama

Convertir números Romanos a Arábigos

También puedes ver el proceso inverso: [liga a="http://www.elticus.com/?contenido=96"]Arábigo a Romano

El proceso de conversión de Números Romanos (I, II, III,…) a Números Arábigos (1, 2, 3,…) es un proceso bastante simple y consiste en



La suma de los valores individuales de los caracteres que forman el Número Romano


Así pues tenemos que la conversión sería así:

I = 1
II =1+1
III =1+1+1
IV = 1 + 4 ?

Y aquí viene el primer tropiezo, ya que números como el 4 (IV), el 9 (IX) o el 900(CM) requieren de una resta. Para solucionarlo podemos tomar dos caminos, uno sería tener una tabla con los valores romanos de todos los elementos, incluyendo los valores compuestos, e ir comparando cada uno contra dicha tabla asegurándonos de comparar primero XC antes de X y IV antes de I.

La otra manera es implementando un sistema de sumas y restas condicionadas donde para cada número estemos revisando también el de adelante y si el de adelante es mayor, entonces es una resta, y si es menor o igual entonces es una suma.

La primera opción es la mas sencilla de implementar, no obstante, en lo personal considero más elegante la segunda, ya que puede también funcionar con valores "no ortodoxos" como en el caso de que para poner 1999 ponen MIM (1000 -1 +1000) en lugar de MCMXCIX (1000 + 900 +90 +9)

Entonces, vamos a desarrollar esta segunda opción primero por medio de un Seudo código.

Pseudocódigo


Condiciones iniciales:
Como condición inicial consideraremos que contamos con una función llamada ValorRomano() que nos devuelve el valor numérico de caracteres individuales.
Ejemplo: ValorRomano("I")=1, ValorRomano("V")=5

1. Inicio
2. Previa definición de ValorRomano()
3. Obtener: R como número Romano
4. Resultado = 0
5. Max = Longitud de R
6. Ciclo en i hasta Max - 1
7.      C = Caracter i de R
8.      C2 = Caracter i+1 de R
9.      si ValorRomano(C)< ValorRomano(C2) entonces
10.         Resultado = Resultado - ValorRomano(C)
11.     sino
12.          Resultado = Resultado + ValorRomano(C)
13.     Fin-si
14. Fin-Ciclo
15.     C2 = Caracter Max de R
16. Resultado = Resultado + ValorRomano(C2)
17. Mostrar Resultado
18. Fin


Observaciones al Proceso:
  • Primero calculamos la longitud de la cadena (5)
  • Como vamos a estar checando un carácter adelante, hacemos el ciclo hasta uno antes del total. (6)
  • Obtenemos los caracteres individuales de las posiciones e [i+1] (7 y 8)
  • Si el primer carácter es menor que el segundo (9) entonces es un IV, IX, XC y hay que restarle el valor del primero (10) de lo contrario se suma (12)
  • Al final, hay que sumar también el valor del último carácter de la cadena (15,16) ya que en nuestro ciclo lo habíamos omitido con el -1

Diagrama de flujo

[imagen en="archivos/diagramas/diagramaromano2.gif"]




Nadie ha puesto ningún comentario todavía


Haz un comentario sobre este tema
Nombre email (no se muestra)
comentario:
Escribe las 2 letras que ves aquí: Imagen anti-spam =




No hay comentarios

Artículos relacionados:
Diagrama Diagrama de flujo para calcular y mostrar el área de un triángulo. Diagrama Diagrama de flujo para convertir de grados centígrados a grados Fahrenheit. Diagrama Diagrama de flujo para calcular e imprimir la suma de los números del 1 al 100, utilizando un ciclo automático . Diagrama Diagrama de flujo que solicite un número y determine si el número introducido es par o es non. Diagrama Diagrama de flujo que solicite un número y determine si el número introducido es primo o no.
Diagrama Diseñar un diagrama que solicite las medidas de los lados de un triángulo y diga si este es equilátero, isósceles o escaleno Diagrama Diagrama de flujo que solicite y llene una matriz de 4x4 y muestre la diagonal principal Diagrama Diagrama de flujo que solicite 4 Calificaciones y diga si está reprobado o no Diagrama Diagrama de flujo, algoritmo y pseudocódigo para convertir un número a Romano