Saltar al contenido
EjemplosEnglishEspacio →

Números romanos

Convierte un número entre 1 y 3999 a números romanos.

Nivel
Avanzado
Conceptos:
Entrada y salida
Arreglos
Para
Mientras
Texto
Abrir en Codoritmo

Ejecuta, modifica y depura este ejemplo en el navegador.

Lo que aprenderás

Dos arreglos paralelos guardan los valores y sus símbolos. Un Mientras dentro de un Para resta el mayor valor posible las veces que haga falta.

Código

roman-numerals.psc · 47 líneas
Algoritmo NumerosRomanos    Definir valores, numero, resto, i Como Entero    Definir simbolos, romano Como Caracter    Dimension valores[13], simbolos[13]    valores[1] <- 1000    simbolos[1] <- "M"    valores[2] <- 900    simbolos[2] <- "CM"    valores[3] <- 500    simbolos[3] <- "D"    valores[4] <- 400    simbolos[4] <- "CD"    valores[5] <- 100    simbolos[5] <- "C"    valores[6] <- 90    simbolos[6] <- "XC"    valores[7] <- 50    simbolos[7] <- "L"    valores[8] <- 40    simbolos[8] <- "XL"    valores[9] <- 10    simbolos[9] <- "X"    valores[10] <- 9    simbolos[10] <- "IX"    valores[11] <- 5    simbolos[11] <- "V"    valores[12] <- 4    simbolos[12] <- "IV"    valores[13] <- 1    simbolos[13] <- "I"    Escribir "Número entre 1 y 3999:"    Leer numero    Si numero < 1 O numero > 3999 Entonces        Escribir "Los romanos no escribían ese número."    SiNo        romano <- ""        resto <- numero        // Restamos el mayor valor posible tantas veces como entre        Para i <- 1 Hasta 13 Hacer            Mientras resto >= valores[i] Hacer                romano <- romano + simbolos[i]                resto <- resto - valores[i]            FinMientras        FinPara        Escribir numero, " en números romanos es ", romano    FinSiFinAlgoritmo

Diagrama de flujo

Cada bloque del diagrama corresponde a una instrucción del código.

Algoritmo NumerosRomanosSíNoSíNoAlgoritmo NumerosRomanosAlgoritmo NumerosRomanosDefinir valores, numero, resto, i Como EnteroDefinir valores, numero,resto, i Como EnteroDefinir simbolos, romano Como CaracterDefinir simbolos, romano ComoCaracterDimension valores[13], simbolos[13]Dimension valores[13],simbolos[13]valores[1] <- 1000valores[1] <- 1000simbolos[1] <- "M"simbolos[1] <- "M"valores[2] <- 900valores[2] <- 900simbolos[2] <- "CM"simbolos[2] <- "CM"valores[3] <- 500valores[3] <- 500simbolos[3] <- "D"simbolos[3] <- "D"valores[4] <- 400valores[4] <- 400simbolos[4] <- "CD"simbolos[4] <- "CD"valores[5] <- 100valores[5] <- 100simbolos[5] <- "C"simbolos[5] <- "C"valores[6] <- 90valores[6] <- 90simbolos[6] <- "XC"simbolos[6] <- "XC"valores[7] <- 50valores[7] <- 50simbolos[7] <- "L"simbolos[7] <- "L"valores[8] <- 40valores[8] <- 40simbolos[8] <- "XL"simbolos[8] <- "XL"valores[9] <- 10valores[9] <- 10simbolos[9] <- "X"simbolos[9] <- "X"valores[10] <- 9valores[10] <- 9simbolos[10] <- "IX"simbolos[10] <- "IX"valores[11] <- 5valores[11] <- 5simbolos[11] <- "V"simbolos[11] <- "V"valores[12] <- 4valores[12] <- 4simbolos[12] <- "IV"simbolos[12] <- "IV"valores[13] <- 1valores[13] <- 1simbolos[13] <- "I"simbolos[13] <- "I"Escribir "Número entre 1 y 3999:"Escribir "Número entre 1 y3999:"Leer numeroLeer numeroSi numero < 1 O numero > 3999 Entoncesnumero < 1 O numero> 3999Escribir "Los romanos no escribían ese número."Escribir "Los romanos noescribían ese número."romano <- ""romano <- ""resto <- numeroresto <- numeroPara i <- 1 Hasta 13 HacerPara i <- 1 Hasta 13Mientras resto >= valores[i] Hacerresto >= valores[i]romano <- romano + simbolos[i]romano <- romano + simbolos[i]resto <- resto - valores[i]resto <- resto - valores[i]Escribir numero, " en números romanos es ", romanoEscribir numero, " en númerosromanos es ", romanoFinAlgoritmoFinAlgoritmo

Ejemplo de ejecución

Esto muestra el programa al ejecutarlo. Las respuestas escritas por el usuario aparecen resaltadas.

Número entre 1 y 3999:Respuesta del usuario: 20242024 en números romanos es MMXXIV

Desafío

Muestra también cuántos símbolos tiene el número romano obtenido.

Ver pista

Usa Longitud sobre la variable romano.

Abrir en Codoritmo