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