Pages

viernes, 28 de diciembre de 2012

Convertir a números romanos entre 1 y 999 – Diagrama de flujo

Problema
Realizar un algoritmo que permita convertir un número arábigo  comprendido entre  1 y 999 a números romanos.


Solución

  • Entrada: 697
  • Salida:  DCXCVII
Se llama a la subrutina Inicializar, donde inicializamos los arreglos correspondientes, luego se solicita al usuario ingrese un numero entre 1 y 999, luego se captura el numero ingresado en la variable “N”, llamamos a la Subrutina ObtenerUnidadesDecenasCentenas para obtener las unidades, decenas y centenas del numero ingresado, luego llamamos a la subrutina  ConvertirNumero el cual retornara el numero ingresado en números romanos.


Diagrama de flujo - Convertir numero arabigo a romanos

En la subrutina Inicializar se llama  a las subrutinas InicializaUnidades, InicializaDecenas, InicializaCentenas.


Diagrama de flujo - Subrutina Inicializar 

En la subrutina InicializaUnidades, Creamos un arreglo Unidad que contiene a los nueve primeros números romanos, Unidad={“”,“I”,“II”,“III”,“IV”,“V”,“VI”,“VII”,“VIII”,“IX”}, donde Unidad(8)=”VIII”.


Diagrama de flujo - Subrutina InicializaUnidades

En la Subrutina InicializaDecenas, se crea un arreglo Decena que contiene a los números romanos, Decena ={“”,“X”,“XX”,“XXX”,“LX”,”L”,“LX”,“LXX”,“LXXX”,“XC” }, donde Decena(9)=“XC” que corresponde al número noventa.


Diagrama de flujo - Subrutina InicializaDecenas

La subrutina InicializaCentenas, se crea el arreglo Centena la cual contiene los números romanos entre 100 y 900, Centena = {“”,“C”,“CC”,“CCC”,“CD”,“D”,“DC”,“DCC”,“DCC”,“CM”}, donde Centena(7)=”DCC” que corresponde al número 700. 


Diagrama de flujo - Subrutina InicializaCentenas

En la subrutina ObtenerUnidadesDecenasCentenas, 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) y se guarda en la variable “c”.
Ejemplo
Numero = 584
u = 584 MOD 10 = 4
d = TRUNC(584/10) MOD 10 = 8
c = TRUNC(584/100) = 5
Las variable c, d, u nos sirven como índices en los arreglos respectivos para hallar numero romano correspondiente.


Diagrama de flujo - Subrutina ObtenerUnidadesDecenasCentenas

En la subrutina ConvertirNumero
Se compara si el número es mayor igual a 100(N>=0)
Si es Verdadero (Si)
    Mostramos como respuesta los números entre 100 y 999 en romanos
Si es Falso (No)
    Se compara si el número  es mayor igual a 10 (N>=0)
    Si  es Verdadero (Si)
      Mostrará como respuesta los números entre 10 y 99 en romanos
    Si es Falso (No)
      Mostrará como respuesta los numero entre 1 y 9 en romanos


Diagrama de flujo - Subrutina ConvertirNumero

0 comentarios:

Publicar un comentario en la entrada