Pages

sábado, 16 de febrero de 2013

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

Realizar un algoritmo que permita convertir un número arábigo comprendido entre 1 y 999 a números ordinales. Ejemplo
  • Entrada: 697
  • Salida:  sexcentesimo nonagesimo séptimo
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 ordinales.

Diagrama de Flujo - Convertir Numero Entero a Numero Ordinal

Diagrama de Flujo - Subrutina InicializaUnidades

En la Subrutina InicializaDecenas, se crea un arreglo Decena que contiene a los números ordinales, Decena ={“”,“decimo”,“vigesimo”,“trigesimo”,“cuadragesimo”,”quincuagesimo”,“sexagesimo”,“septuagesimo”,“octogesimo”,“nonagesimo” }, donde Decena(9)=“nonagesimo” que corresponde al número noventa. 
Diagramas de Flujo - Subrutina InicializaDecenas


La Subrutina InicializaCentenas, se crea el arreglo Centena la cual contiene los números ordinales entre 100 y 900, Centena = {“”,“centesimo”,“ducentesimo”,“tricentesimo”,“ cuadringentesimo”,“ quingentesimo”,“ sexcentesimo”,“ septingentesimo”,“ octingentesimo”,“ noningentesimo”}, donde Centena(7)=” septingentesimo” 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 número ordinal 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 ordinales
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 ordinales
    Si es Falso (No)
    Mostrará como respuesta los numero entre 1 y 9 en ordinales

Diagrama de Flujo - Subrutina ConvertirNumero

 Diagrama de Flujo en FreeDFD
 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

1 comentario: