All pastes #14639 Raw Edit

Unnamed

public text v1 · immutable
#14639 ·published 2005-06-15 16:47 UTC
rendered paste body
// ESTE PROGRAMA SE DISTRIBUYE BAJO LA LICENCIA PUBLICA GPL
// Autor: Juan R Medina R (WOTTAN) jmedinar@gmail.com
// Fecha: 13/Jun/05
// Descripcion:
/*
		Este modulo para c# recibe un dato de tipo decimal y retorna su equivalente 
		alfabetico respetando las reglas de sintaxis Latinoamericanas de moneda para uso en
		aplicaciones de tipo contable o similares. 
*/

using System;
using System.Text;

class MonedaToCadena
{
    public string Convert(int x)
    {
        // Declaracion de variables		

        int valor;
        int sigdigito;
        int numdigitos;
        string resultado;
        bool band;

        int[] n = new int[12]; // arreglo que almacena los numeros por separado del valor a convertir
        int[] inv = new int[12]; // arreglo invertido

        int i, j;

        string millares;
        string millones;
        string billones;
        string trillones;

        // Cadenas que almacena las transcripciones basicas de los numeros

        string[] unidades = { "cero", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve" };
        //string[] decenas =  { "cero", "once", "doce", "trece", "catorce", "quince", "dieciseis", "diecisiete", "dieciocho", "diecinueve"};
        string[] centenas =  { "cero", "ciento", "doscientos", "trescientos", "cuatrocientos", "quinientos", "seiscientos", "setecientos", "ochocientos", "novecientos" };
        string[] decenas_especial =  { "diez", "veinte", "treinta", "cuarenta", "cincuenta", "sesenta", "setenta", "ochenta", "noventa" };

        // Inicializacion de variables
        valor = x;
        sigdigito = 0;
        numdigitos = 0;
        millares = "mil";
        millones = "millones";
        billones = "billones";
        trillones = "trillones";
        band = false;
        resultado = "";

        // Obtenemos los digitos individuales y los almacenamos en el arreglo n estos quedaran en orden inverso

        do
        {
            sigdigito = valor % 10;
            n[numdigitos] = sigdigito;
            numdigitos++;
            valor = valor / 10;
        } while (valor > 0);

        // Invertimos el arreglo

        for (i = 0, j = 12 - 1; i < j + 1; i++, j--)
        {
            inv[j] = n[i];
        }

        for (i = 0; i < 12; i++)
        {
            switch (i)
            {
                case 0: // Error				
                    break;
                //****************************************************************
                case 1: // Centenas de billon

                    break;
                case 2: // Decenas de billon

                    break;
                case 3: // Unidades de billon

                    break;
                //*****************************************************************
                case 4: // Centenas de millon

                    break;
                case 5: // Decenas de millon

                    break;
                case 6: // Unidades de millon

                    break;
                //******************************************************************
                case 7: // Centenas de millar
                    if (centenas[inv[i]] == "cero") { break; }
                    else { resultado = resultado + centenas[inv[i]] + millares; }
                    break;
                case 8: // Decenas de millar
                    if (inv[i] != 1)
                    {
                        if (decenas_especial[inv[i]] == "cero") { break; }
                        else
                        {
                            //try
                            //{
                                resultado = resultado + decenas_especial[inv[i]];// - 1] +millares;
                            //}
                            //catch (Exception e)
                            //{
                            //    Console.WriteLine("Excepcion: {0}", e);
                            //}
                        }
                    }
                    else
                    {
                        switch (inv[i + 1])
                        {
                            case 0: resultado = resultado + "diez" + millares;
                                break;
                            case 1: resultado = resultado + "once" + millares;
                                break;
                            case 2: resultado = resultado + "doce" + millares;
                                break;
                            case 3: resultado = resultado + "trece" + millares;
                                break;
                            case 4: resultado = resultado + "catorce" + millares;
                                break;
                            case 5: resultado = resultado + "quince" + millares;
                                break;
                            case 6: resultado = resultado + "dieciseis" + millares;
                                break;
                            case 7: resultado = resultado + "diecisiete" + millares;
                                break;
                            case 8: resultado = resultado + "dieciocho" + millares;
                                break;
                            case 9: resultado = resultado + "diecinueve" + millares;
                                break;
                            default:
                                break;
                        }
                        band = true;
                    }
                    break;
                case 9: // Unidades de millar
                    if (band == false)
                    {
                        if (unidades[inv[i]] == "cero") { break; }
                        else { resultado = resultado + unidades[inv[i]] + millares; }
                        band = true;
                    }
                    break;
                //*******************************************************************
                case 10: // Centenas				
                    if (centenas[inv[i]] == "cero") { break; }
                    else { resultado = resultado + centenas[inv[i]]; }
                    break;
                case 11: // Decenas				
                    if (inv[i] != 1)
                    {
                        if (decenas_especial[inv[i]] == "cero") { break; }
                        else { resultado = resultado + decenas_especial[inv[i] - 1]; }
                    }
                    else
                    {
                        switch (inv[i + 1])
                        {
                            case 0: resultado = resultado + "diez";
                                break;
                            case 1: resultado = resultado + "once";
                                break;
                            case 2: resultado = resultado + "doce";
                                break;
                            case 3: resultado = resultado + "trece";
                                break;
                            case 4: resultado = resultado + "catorce";
                                break;
                            case 5: resultado = resultado + "quince";
                                break;
                            case 6: resultado = resultado + "dieciseis";
                                break;
                            case 7: resultado = resultado + "diecisiete";
                                break;
                            case 8: resultado = resultado + "dieciocho";
                                break;
                            case 9: resultado = resultado + "diecinueve";
                                break;
                            default:
                                break;
                        }
                        band = true;
                    }
                    break;
                case 12: // Unidades				
                    if (band == false)
                    {
                        if (unidades[inv[i]] == "cero") { break; }
                        else { resultado = resultado + unidades[inv[i]]; }
                        band = true;
                    }
                    break;
                //**********************************************************
                default: // Error								
                    break;
            }
        }
        // Retornamos el resultado	
        return resultado;
    }
}

class borrar
{
    public static void Main()
    {
        MonedaToCadena val = new MonedaToCadena();
        string resp2;
        resp2 = val.Convert(114);
        Console.WriteLine("El valor es: " + resp2);
    }
}