Realizar un algoritmo que permita convertir un número arábigo comprendido entre 1000 y 2000 a números romanos.
Solución
- Entrada: 1597
- Salida: MDXCVII
Diagrama de flujo - Convertir numero arabigo a numero romano
En la subrutina Inicializar se llaman a las subrutinas InicializaUnidades, InicializaDecenas, InicializaCentenas y InicializaMil.
Diagrama de flujo - Subrutina Inicializar
En la subrutina InicializaUnidades, Se crea el arreglo Unidad que contiene a los 9 primeros números romanos Unidad = {“”,“I”,“II”,“III”,“IV”,“V”,“VI”,“VII”,“VIII”,“IX”}, donde Unidad(7)=”VII” que corresponde al número 7 en romanos.
Diagrama de flujo - Subrutina InicializaUnidades
En la Subrutina InicializaDecenas, se crea el arreglo Decena que contiene a los números del 10 al 90 en romanos, Decena={“”,“X”,“XX”,“XXX”,“XL”,“L”,“LX”,“LXX”,“LXXX”,“XC”} , donde Decena(8)=”LXXX” que corresponde al número 80 en romanos.
Diagrama de flujo - Subrutina InicializaDecenas
En la subrutina InicializaCentenas, se crea el
arreglo Centena que contiene a los números romanos entre 100 y 900
Centena={“”,“C”,“CC”,“CCC”,“CD”,“D”,“DC”,“DCC”,“DCCC”,“CM”}, donde
Centena(4)=”CD” que corresponde al número 400 en romanos.
Diagrama de flujo - Subrutina InicializaCentenas
En la Subrutina InicializaMil, se crea el Arreglo Mil que contiene a los números romanos 1000 y 2000, Mil={“”,”M”,”MM”}, donde Mil(1)=”M”, que corresponde al número 1000 en romanos.
Diagrama de flujo - Subrutina InicializaMil
En la subrutina ObtenerUnidadDecenaCentenaMil, se obtiene las unidades con N MOD 10 y se guarda en la variable “u”, las decenas con TRUNC(N/10) MOD 10 y se guarda en la variable “d”, las centenas con TRUNC(N/100) MOD 10 y se guarda en la variable “c”, las milésimas con TRUNC(N/1000) y se guarda en la variable m.
Ejemplo:
Numero = 1584
u = 584 MOD 10 = 4
d = TRUNC(584/10) MOD 10 = 8
c = TRUNC(584/100) MOD 10 = 5
m = TRUNC(N/1000) = 1
Las variable m, c, d, u nos sirven como índices en los arreglos respectivos para hallar número romano correspondiente.
Ejemplo:
Numero = 1584
u = 584 MOD 10 = 4
d = TRUNC(584/10) MOD 10 = 8
c = TRUNC(584/100) MOD 10 = 5
m = TRUNC(N/1000) = 1
Las variable m, c, d, u nos sirven como índices en los arreglos respectivos para hallar número romano correspondiente.
Diagrama de flujo - Subrutina ObtenerUnidadDecenaCentenaMil
En la Subrutina Convertirentre1000y2000, Se compara Si N es mayor igual a 1000 y menor igual a 2000 (N>=1000 AND N<=2000)
Si es Verdadero (Si)
Se llama a la subrutina ObtenerUnidadDecenaCentenaMil para extraer los índices
de los arreglos, luego se muestra el número ingresado en romanos.
Si es Falso (No)
Se muestra un mensaje que esta fuera del rango.
Si es Verdadero (Si)
Se llama a la subrutina ObtenerUnidadDecenaCentenaMil para extraer los índices
de los arreglos, luego se muestra el número ingresado en romanos.
Si es Falso (No)
Se muestra un mensaje que esta fuera del rango.
Diagrama de flujo - Subrutina Convertirentre1000y2000
Diagrama Fuente DFD | ||
Código fuente en Java | ||
Código fuente en C++ | ||
Código fuente en C | ||
Código fuente en C# | ||
Código fuente en Python | ||
Código fuente en Visual Basic |
0 comentarios:
Publicar un comentario