Pages

martes, 25 de diciembre de 2012

Ingrese un número y convierta a letras – Diagrama de Flujo

Ingrese un número y convierta a letras – Diagrama de Flujo

Problema
Ingrese un número y convierta a letras.
Solución
Esta solución solo acepta números que van desde el número cero al noventa y nueve, donde el usuario ingresa un numero decimal y la aplicación retornara como respuesta dicho número en letras.
Ejemplo
  • Entrada: 35
  • Salida:  treinta y cinco.
Primero  inicializamos un arreglo donde estarán las unidades, este arreglo será igual a los números del cero al diez en letras.

Unidades={“cero”, ”uno”, ”dos” ,”tres” ,”cuatro” ,”cinco” ,”seis” ,”siete” ,”ocho” ,”nueve” ,”diez”} donde el elemento Unidades(3)=”tres”, Unidades(9)=”nueve”, etc.


Procederemos de igual manera para los números del 11 al 19 cuyo arreglo se llamara Inicializar11a19,  este arreglo contendrá  a todos los números del once al diecinueve en letras.


Finalmente inicializaremos el arreglo “Decenas” que contendrá los números  veinte, treinta,..., noventa en letras.




Luego de inicializar solicitaremos al usuario que ingrese un numero para ser evaluado para lo cual se coloca un recuadro de lectura y creamos una variable llamada “num”
Luego de ello realizamos una comparación para determinar si “num” es mayor  a 10
Si es Falso tomaremos el camino izquierdo donde nos mostrara el resultado  buscado
Ejemplo
  • Entrada: 6
  • Resultado:  seis

Si es Verdadero  nos iremos por el lado derecho y llamaremos a una subrutina llamada NumeroMayora10 el cual recibirá 4 parámetros num, Decenas, Unidades, num11a19  las cuales serán utilizadas en la subrutina.


Luego se hace otra consulta si “num” es mayor a 19
Si el resultado de la comparación es  falsa, lo que haremos será extraer el numero en letras del arreglo num11a19, que recibe como parámetro “num-11”(num menos once), debido a que en este arreglo los índices van de 0 a 8(el dato en la posición 0 es el once , en la posición 1 es el doce, etc.).
Ejemplo
  • Entrada: num=15
           Num11a19 (num-11) = “quince”
  • Resultado: quince

Si el resultado de la comparación  es verdadera, entonces llamaremos a la subrutina ObtenerUnidades,las unidades se obtienen sacando modulo 10  a “num”.
Ejemplo
          MOD(36,10) = 6  el modulo nos retorna el residuo de una división
Esta subrutina nos retorna la unidad de un numero por ejemplo 36 nos retorna 6


Una vez obtenido la unidades pasamos a la subrutina ObtenerDecenas,  para obtener las decenas las decenas la operación a realizar es: al número dado le restamos las unidades y lo dividimos entre diez,  d=(num-u)/10,  así obtenemos las decenas


Ahora haremos una pregunta si las unidades son iguales a cero
De ser Verdadero, mostraremos el resultado con los datos del arreglo Decenas, para acceder a un elemento a las decenas obtenidas le restamos 2 (Decenas(0)=veinte,Decenas(1)=treinta, …,Decenas(7)=noventa)
Ejemplo
  • Entrada: num = 50  donde d=5
          Decenas(d-2)=”cincuenta”
  • Resultado = cincuenta


De ser falso,  mostraremos el arreglo de Decenas  y Unidades a la vez
Ejemplo
  • Entrada: num=39
          d = 3, u = 9
          Decenas(d-2)=”treinta”    y  Unidades(u)=”nueve”
  • Resultado:  treinta y nueve

Código Fuente:
 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

5 comentarios:

Alejandro Manson dijo...

podrian decirme como lo ago asta 999,999

Alonso Sibaja dijo...
Este comentario ha sido eliminado por el autor.
Alonso Sibaja dijo...

como hacerlo sin usar subrutina??? :S

David Gutierrez dijo...

Como puedo hacelo sin los subprogramas???¡?¡?¡

Cristian Ramírez Fonseca dijo...

Los subprogramas me follan la mente porque le quiero poner mi esencia

Publicar un comentario en la entrada