s2Eva_IT2011_T4 Números Romanos a Decimal

Ejercicio: 2Eva_IT2011_T4 Números Romanos a decimal

Par convertir un número decimal a un número romano, se usa equivalencias entre la cadena “romano” y la lista “decimal”, ambas son del mismo tamaño para tener una relación uno a uno.

romano  = 'IVXLCDM'
decimal = [1,5,10,50,100,500,1000]

Por ejemplo «X» de número romano tiene índice 2 en la cadena «romano«, con el índice se busca el equivalente en la lista «decimal» y se obtiene el valor de 10. Ase de traduce cada letra del número romano y se almacena en una nueva lista de resultado, denominada «equivale«.

Ejemplos:
Romano: CLXIII C L X I I I
Decimal: 163 +100 +50 +10 +1 +1 +1
Romano: CXLIX C X L I X
Decimal: 149 +100 -10 +50 -1 +10

Antes de acumular los valores de equivale, se revisa cada valor de decimal, si el valor posterior a cada posición o índice resulta que es mayor, la operación es de tipo resta.

Finalmente, con los signos incluidos, se acumulan los valores de la lista de equivalentes para mostrar el valor en decimal.

Tarea: Implementar la tercera regla, que no se repita una letra más de tres veces.

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IT2011_T4 Números Romanos a Decimal
# propuesta: edelros@espol.edu.ec

# INGRESO
cadena = input('numero en romano: ')

# PROCEDIMIENTO
romano  = 'IVXLCDM'
decimal = [1,5,10,50,100,500,1000]
cadena  = cadena.upper()
n = len(cadena)

#cambia a equivalentes decimales
equivale = []
i = 0
while (i<n):

    #busca en romano
    j = 0
    while (j<7):
        if (cadena[i]==romano[j]):
            equivale.append(decimal[j])
        j = j + 1
    i = i + 1
    
#Revisa signos y acumula
suma = 0
i = 0
while (i<(n-1)):
    if (equivale[i]<equivale[i+1]):
        equivale[i] = -equivale[i]
    suma = suma + equivale[i]
    i = i + 1
suma = suma + equivale[n-1]

print(suma)

ejercicios resueltos Python 2eva_it2011_t4 pdf

ejercicios resueltos Matlab 2eva_it2011_t4 pdf