Convertidor de numeros a letras en C#

Hola amigos pues ayer sabado 11 de mayo me puse a la idea de crear una super clase para convertir un numero en letras para poder usarla en varias aplicaciones:

esta super sencilla pero cumple que lo con su cometido.
hasta ahorita convierte el maximo valor de 999999999

 he aqui el codigo:



using System;
using System.Collections.Generic;
using System.Text;
/*
 * Autor: Ing. Jose Israel Gomez Rodriguez. (Joshyba)
 *clase para convertir numero a letras
 * 1=uno
 * 100=cien
 * 1000 = mil
 * 2569 = dos mil quinientos sesenta y nueve
 * 19 = diecinueve
 */
namespace NumeroLetras
{
    public class Convertir
    {
        public Convertir()
        {
        }
        string[] NumeroBase ={
                                 "",
                                 "uno",
                                 "dos",
                                 "tres",
                                 "cuatro",
                                 "cinco",
                                 "seis",
                                 "siete",
                                 "ocho",
                                 "nueve",
                                 "diez",
                                 "once",
                                 "doce",
                                 "trece",
                                 "catorce",
                                 "quince",
                                 "dieciseis",
                                 "diecisiete",
                                 "dieciocho",
                                 "diecinueve",
                            };
        string[] NumeroBase2 = {
                                   "",
                                   "",
                                   "veinte",
                                   "treinta",
                                   "cuarenta",
                                   "ciencuenta",
                                   "sesenta",
                                   "setenta",
                                   "ochenta",
                                   "noventa"
                               };
        public string Convertir_Numero(string num)
        {
            string Resultado = "";
            int Tama_Cadena = num.Length;
            if (Tama_Cadena < 4)//3
                Resultado = Trio(Tama_Cadena,num);
            else if (Tama_Cadena < 7)//6
            {
                int millares = Tama_Cadena - 3;
                if(num.Substring(0,1)=="1" && Tama_Cadena==4)
                    Resultado = "mil " + Trio(3, num.Substring(millares, 3));
                else
                Resultado = Trio(millares, num.Substring(0, millares)) + " mil " + Trio(3, num.Substring(millares, 3));
            }
            else if (Tama_Cadena < 10)//9
            {
                int millares = Tama_Cadena - 3;
                int millon = Tama_Cadena - 6;
                if (num.Substring(0, 1) == "1" && Tama_Cadena == 7)
                {
                    if(Trio(3, num.Substring(millon, 3))=="")
                        Resultado = "un millon " + Trio(3, num.Substring(millares, 3));
                    else
                        Resultado = "millon " + Trio(3, num.Substring(millon, 3)) + " mil " + Trio(3, num.Substring(millares, 3));
                }
                else
                    Resultado = Trio(millon, num.Substring(0, millon)) + " milllones " + Trio(3, num.Substring(millon, 3)) + " mil " + Trio(3, num.Substring(millares, 3));
            }
            else if (Tama_Cadena < 13)
                Resultado = Trio(3, num.Substring(0, 3)) + " mil " + Trio(3, num.Substring(4, 3)) + " milllones " + Trio(3, num.Substring(7, 3)) + " mil " + Trio(3, num.Substring(10, 3));
            else if (Tama_Cadena < 16)
                Resultado = Trio(3, num.Substring(0, 3)) + " billones " + Trio(3, num.Substring(4, 3)) + " mil " + Trio(3, num.Substring(7, 3)) + " milllones " + Trio(3, num.Substring(10, 3)) + " mil " + Trio(3, num.Substring(13, 3));
            else if (Tama_Cadena < 19)
                Resultado = Trio(3, num.Substring(0, 3)) + " mil " + Trio(3, num.Substring(4, 3)) + " billones " + Trio(3, num.Substring(7, 3)) + " mil " + Trio(3, num.Substring(10, 3)) + " milllones " + Trio(3, num.Substring(13, 3)) + " mil " + Trio(3, num.Substring(13, 3));
            else if (Tama_Cadena < 21)
                Resultado = "";
            else if (Tama_Cadena < 24)
                Resultado = "";
            return Resultado;
        }
        string Unidades(string numx)
        {
            return NumeroBase[Convert.ToInt32(numx)];
        }
        string Decenas(string numx)
        {
            string Pre = "";
            int Num=Convert.ToInt32(numx);
            if (Num < 20)
            {
                Pre = NumeroBase[Num];
            }
            else
            {
                if (numx.Substring(0, 1) == "2")
                    Pre = NumeroBase2[2] + Unidades(numx.Substring(1, 1));
                else
                {
                    if (numx.Substring(1, 1) == "0")
                        Pre = NumeroBase2[Convert.ToInt32(numx.Substring(0, 1))];
                    else
                        Pre = NumeroBase2[Convert.ToInt32(numx.Substring(0, 1))] + " y " + Unidades(numx.Substring(1, 1));
                }
            }
            return Pre;
        }
        string Centenas(string numx)
        {
            string Pre = "";
            if (numx.Substring(0, 1) == "1")
            {
                if (numx.Substring(1, 1) == "0" && numx.Substring(2, 1) == "0")
                    Pre = "cien ";
                else
                    Pre = "ciento " + Decenas(numx.Substring(1, 2));
            }
            else if (numx.Substring(0, 1) == "0")
            {
                Pre = "" + Decenas(numx.Substring(1, 2));
            }
            else if (numx.Substring(0, 1) == "5")
            {
                Pre = "quinientos " + Decenas(numx.Substring(1, 2));
            }
            else if (numx.Substring(0, 1) == "7")
            {
                Pre = "setecientos " + Decenas(numx.Substring(1, 2));
            }
            else if (numx.Substring(0, 1) == "9")
            {
                Pre = "novecientos " + Decenas(numx.Substring(1, 2));
            }
            else
            {
                Pre = NumeroBase[Convert.ToInt32(numx.Substring(0, 1))] + "cientos " + Decenas(numx.Substring(1, 2));
            }
            return Pre;
        }
        string Trio(int cant, string Val)
        {
            string CadenaFinal = "";
            switch (cant)
            {
                case 1:CadenaFinal = Unidades(Val);
                    break;
                case 2: CadenaFinal = Decenas(Val);
                    break;
                case 3: CadenaFinal = Centenas(Val);
                    break;
            }
            return CadenaFinal;
        }
    }
}



Para lo que deseen les dejo el proyecto:

IDE. Visual Studio 2012

Lenguaje: C#
Compilacion: DLL
Peso:2.43 MIB

Proyecto prueba: Prueba_Full
Saludos y tenga lindo día.

Visita mis otras paginas:

Comentarios

  1. Esta muy interesante, pero el unico problema es que no toma en cuenta los decimales

    ResponderEliminar
    Respuestas
    1. Eso es muy cierto, en esta version asi es unicamente puros enteros!!.

      Eliminar
  2. Revisado!!! e igual se ve muy interesante, saludos!!!

    ResponderEliminar
  3. 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

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Juego del ahorcado en C# (C Sharp)

RompeCabezas - Juego 1 - VC# 2012

Escribiendo en los TextField de un Pdf con Visual Basic y iTextSharp