Pages

jueves, 3 de enero de 2013

Algoritmo para Convertir Numeros a Letras - Codigo Fuente en C#

Problema
Desarrollar un programa donde se ingrese un número y lo convierta en letras.
Solución
Esta implementación solo acepta números que van desde el  cero al noventa y nueve,  el usuario ingresa un número  y la aplicación retornara  dicho número convertido en letras.
Ejemplo
  - Entrada: 92
  - Salida:  noventa y dos.

Código Fuente en C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace codigoBlog
{
    class Program
    {
        static void Main(string[] args)
        {

            string[] unidades = 
            {"cero", "uno", "dos" ,"tres" ,"cuatro" ,"cinco" ,
                "seis" ,"siete" ,"ocho" ,"nueve","diez"};
            string[] especiales = 
            {"once", "doce","trece","catorce", "quince",
                "diezciseis", "diecisiete", "dieciocho", "diecinueve"};
            string[] decenas = 
            {"veinte", "treinta","cuarenta","cincuenta",
                "sesenta", "setenta", "ochenta", "noventa"};

            Console.WriteLine("Ingrese un numero entre 0-99: ");
            int num = Convert.ToInt32(Console.ReadLine());

            if (num >= 0 && num < 11)
                Console.WriteLine('\n' + unidades[num]);
            else if (num < 20)
                Console.WriteLine('\n' + especiales[num - 11]);
            else if (num < 100)
            {
                int unid = num % 10;
                int dec = num / 10;
                if (unid == 0)
                    Console.WriteLine('\n' + decenas[dec - 2]);
                else
                    Console.WriteLine('\n' + decenas[dec - 2] + " y " + unidades[unid]);
            }
            else
                Console.WriteLine("El numero debe ser menor a 100");

            Console.ReadLine();

        }
    }
}

6 comentarios:

Orlando cisneros dijo...

como hacer si tiene mas cifras digamos un millon

Master dijo...

buenisimo aporte, gracias !!!

pamichem dijo...

Tienes unos pequeños detalles, modifique para corregirlos:

1.- Tomas al Diez como unidad cuando lo deberías tomar como decena.
2.- Escribe "Veinte y cinco" cuando debería escribir "Veinticinco".

//Validación de campo vacío
if (textBox1.Text == "")
{
MessageBox.Show("No dejes espacios vacios");
}
else
{
//Declaración y asignación de variable
int _numero = Convert.ToInt32(textBox1.Text);
//Validación de rango de números
if (_numero < 0 || _numero >= 100)
{
MessageBox.Show("Ingresa solo números de 0 a 99");
}
else
{
//Declaración de arreglo para unidades
string[] unidades = {"cero","uno","dos","tres","cuatro","cinco",
"seis","siete","ocho","nueve" };
//Declaración de arreglo para números únicos
string[] especiales = {"once", "doce","trece","catorce",
"quince", "diezciseis", "diecisiete",
"dieciocho", "diecinueve","ventiuno",
"veintidos","veintitres","veinticuatro",
"veinticinco","ventiseis","veintisiete",
"ventiocho","veintinueve"};
//Declaración de arreglo para decenas
string[] decenas = {"diez","veinte", "treinta","cuarenta","cincuenta",
"sesenta", "setenta", "ochenta", "noventa" };

//Validación de unidades
if (_numero >= 0 && _numero < 10)
{
MessageBox.Show(unidades[_numero]);
}
else
{
//Validación de números únicos
// El operador != representa una diferencia
if (_numero < 20 && _numero < 30 && _numero != 10)
{
MessageBox.Show(especiales[_numero - 11]);
}
else
{
//Validación de decenas
if (_numero < 100)
{
//Se obtienen las unidades
int _unidades = _numero % 10;
//Se obtiene la decena
int _decenas = _numero / 10;
//Se comprueba si la decena tiene unidades
if (_unidades == 0)
{
MessageBox.Show(decenas[_decenas - 1]);
}
else
{
/*Si tiene unidades se hace una concatenación
de los arreglos*/
MessageBox.Show(decenas[_decenas - 1] + " y " +
unidades[_unidades]);
}
}
}
}
}
}

CEO at UrySoft dijo...

Aquí una librería gratuita que hace todo esto y mas!!! Here is a free library that does all this and more !!!
http://urysoft.blogspot.com.es/p/urysoftutilities.html?view=sidebar

Unknown dijo...
Este comentario ha sido eliminado por el autor.
JAIRZINHO JESUS PORTILLA CASTAÑEDA dijo...

xfavor ayudeme necesito como hago esto :
5. Efectuar un programa que mediante una caja de texto reciba un número de 4 dígitos y haga la validación del siguiente modo:
a) Solo recibe números del 1000 al 9999
b) No permite otros caracteres más que solo dígitos

Publicar un comentario en la entrada