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();

        }
    }
}

8 comentarios:

Unknown 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]);
}
}
}
}
}
}

Unknown dijo...
Este comentario ha sido eliminado por el autor.
Unknown 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

Bullmolina dijo...

ayuda necesito para mañana quiero que llegue asta 1000

Jim dijo...

como hago para que me tansforme de 3 digitos

Yenier Venegas dijo...

Vi este video y me funcionó y me permitió descargar el proyecto , se los comparto! https://www.youtube.com/watch?v=GThaZPLJq_k&lc=z130i5vbftb1x55oy04cfh0x4ryphnpopgo

Publicar un comentario