INSTITUTO TECNOLOGICO SUPERIOR DE ESCARCEGA INGENIERIA EN SISTEMAS COMPUTACIONALES SEMESTRE: III ASIGNATURA: TOPICOS SELECTOS DE PROGRAMACION NOMBRE DEL TRABAJO: COVERCIONES. AUTORES: EDUARDO DAMIAN DOMINGUEZ GUILLERMO LUIS ALBERTO POOL BAUTISTA GRISELDA DEL CARMEN CASTRO MIJANGOS. FLORENTINA EK GUTIERREZ LILIANA ESPERANZA MOLINA GARCIA
CONVERSION DE NUMEROS ARABIGOS A ROMANOS.
El proceso de conversión de Números Arábigos (1, 2, 3,…) a Números Romanos (I, II, III,…) consiste en lo siguiente: Dado un número, se realiza una serie de comparaciones contra cada uno de los valores correspondientes a los símbolos romanos enlistados una tabla que los contenga ordenados de mayor a menor. La clave es dicha tabla (que por facilidad puede ser también dos vectores paralelos) que nos muestre los valores romanos ordenados desde el más alto y hasta terminar en el más bajo (o sea el 1) así como su “Valor nominal”.
i
Romanos[ ]
Valores[ ]
1
M
1000
2
CM
900
3
D
500
4
CD
400
5
C
100
6
XC
90
7
L
50
8
XL
40
9
X
10
10
IX
9
11
V
5
12
IV
4
13
I
1
Pseudocódigo Este mismo proceso en pseudo-código, el cual quedaría de la siguiente manera: 1.Inicio 2.Dadas las tablas Romanos[] y Valores[] 3.Pedir: A 4.Hacer Resultado = "" 5. Ciclo en i para cada elemento de Romanos 6. Mientras Valores <= A hacer 7. Resultado = Resultado + Romanos 8. A = A - Valores 9. Fin-Mientras 10. Fin-Ciclo 11.Mostrar Resultado 12.Fin
NOTA: El algoritmo se puede hacer más eficiente si se valida que cuando A llegue a cero, se interrumpa el ciclo. De ese modo sería más óptimo, aunque funcionaría igual.
Diagrama de flujo
CONVERTIR NÚMEROS ROMANOS A ARÁBIGOS 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.
Pseudocódigo Condiciones iníciales: 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
Diagrama de flujo