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