Este programa debería recibir un numero mediante un promt y después convertirlo a letras y mostrarlo en la consola.
123456789 : Ciento veintitrés millones cuatrocientos cincuenta y seis mil setecientos ochenta y nueve
sin embargo como que lee el numero al revés por que me lo regresa así:
123456789 = NOVECIENTOS OCHENTA Y SIETE MILLONES SEISCIENTOS CINCUENTA Y CUATRO MIL TRECIENTOS VEINTIDOS PESOS
este es el código:
"use strict"
var t = "";
var numero = "";
var numeroValido = false;
var c = ["", "CIENTO","DOCIENTOS","TRECIENTOS","CUATROCIENTOS","QUINIENTOS","SEISCIENTOS","SETECIENTOS","OCHOCIENTOS","NOVECIENTOS"];
var d = ["","","","TREINTA","CUARENTA","CINCUENTA","SESENTA","SETENTA","OCHENTA","NOVENTA"];
var u = ["CERO","UN","DOS","TRES","CUATRO","CINCO","SEIS","SIETE","OCHO","NUEVE"];
var o = ["DIEZ","ONCE","DOCE","TRECE","CATORCE","QUINCE","DIECISEIS","DIECISIETE","DIECIOCHO","DIECINUEVE","VEINTIUNO","VEINTIDOS","VEINTITRES","VEINTICUATRO","VEINTICINCO","VEINTISEIS","VEINTISIETE","VEINTIOCHO","VEINTINUEVE"];
do {
numero = prompt("Ingresa un número de 9 cífras como máximo: ", "Ingresa el número...");//Se utilza la función prompt para que el usario ingrese el número.
if(isNaN(numero))//Se evalua si el dato ingresa es un número si no lo es se muestra una alerta
alert("El valor ingresado no es un número entero; favor de ingresar un número entero válido.");//Se le pide al usuario que ingrese un número entero válido.
else if(numero == null)//Se evalua si el valor ingresado es nulo
alert("Favor de ingresar un número entero válido ; no se permiten valores nulos.");//Se le pide el usuario que ingrese un número entero válido que no sea nulo
else if(numero.length == 0)//Se evalua si se ingreso un valor
alert("Ingrese un número entero válido ; no se permiten valores vacíos.");//Se le pide al usuario que ingrese un número entero válido
else if(numero.indexOf(".",0) >=0)//Se evalua si el usuario ingreso un número decimal
alert("Favor de ingresar un número entero válido ; no se permiten números decimales.");//Se le pide al usuario que ingrese un número que no sea decimal
else if(numero.length > 9)//Se evalua que el número ingresado no tenga mas de 9 cifras
alert("Favor de ingresar un número entero válido ; el número no debe de pasar las 9 cifras.");//Se le pide al usuario que ingrese un número que no pase de las 9 cifras
else
numeroValido = true;//Si el número pasa exitosamente las evaluaciones este se considera válido
}while (!numeroValido);
numero = numero.trim();
console.log("Número Ingresado: "+ numero);//Se muestra en consola el número ingresado
//Se analiza cada 3 dígitos
for (var i=0; i<numero.length; i+=3)
{
var x=t;
//formamos un número de 2 dígitos
var b=numero[i+1]!=undefined?parseFloat(numero[i+1].toString()+numero[i].toString()):parseFloat(numero[i].toString());
//analizamos el 3er dígito
t=numero[i+2]!=undefined?(c[numero[i+2]]+" "):"";
t+=b<10?u[b]:(b<30?o[b-10]:(d[numero[i+1]]+(numero[i]=='0'?"":(" Y "+u[numero[i]]))));
t=t=="CIENTO CERO"?"CIEN":t;
if (2<i&&i<6)
t=t=="UNO"?"MIL ":(t.replace("UNO","UN")+" MIL ");
if (5<i&&i<9)
t=t=="UNO"?"UN MILLÓN ":(t.replace("UNO","UN")+" MILLONES ");
t+=x;
}
console.log(t + " PESOS");
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)