Traductor de Cantidades Númericas a Letras
- Inicie sesión o regístrese para enviar comentarios
Hola mis queridísimos Amigos AdictosHP!!!!
Les propongo un desafío un poco más complejo. 
El mismo se trata de desarrollar en UserRPL la implementación de un algoritmo que dado un número entero X mayor o igual que cero y menor o igual que 2^32 = 4294967296
(0<= X <= 4294967296)
Traduzca la cantidad númerica representada por X en la cadena de caracteres que corresponda a la pronunciación de las palabras de esa cantidad.
Os pongo un simple ejemplo para que entendais la esencia de éste maravilloso desafío:
Pila antes de ejecutar el programa:
3:
2:
1: 305
Pila después de ejecutar el programa:
3:
2:
1: "TRESCIENTOS CINCO"
Eso es todo mis amigos.
Un gran abrazo a todos y a trabajar se ha dicho. 
- Inicie sesión o regístrese para enviar comentarios
Otros temas de interes
- como hacer una barra de menus ??
- ROM 2.10-7 Spreadsheet & Geometry manuales y biblioteca.
- Ayuda con Raices
- Nueva Calculadora HP?? HP 39gII spécification
- [PROYECTOS] EoEiProEngLib, MathEngProLib, EquatnEngProLib & and HP50GNKLib
- ayuda con integral exponencial
- programa tipo excell que permita introducir formulas en las tablas
- como aprender tantos comandos en SYSTEM?
- [PROYECTO] Universal Font Library for HP50G CAS para recuperar "Hello World" 3 ->GROB de la HP48GX (1994)
Uyy sinceramente lo veo difícil y a mi parecer va ser un código muy extenso pero veamos si lo logro pues jaja tendria que hacerlo con CASE THEN END
«
n
«
CASE
n 0 == THEN "CERO" END
n 1 == THEN "UNO" END
n 2 == THEN "DOS" END
.
.
.
.
n 305 == THEN "TRESCIENTOS CINCO" END
.
.
.
.
.
END
»
»
salu2
- Inicie sesión o regístrese para enviar comentarios
jhusel que gracioso que eres tu si pasas de payaso la cuestion no es esa se supone que se trata de hacerlo corto no ? te imaginas hacer este programa hasta el numero 4294967296 es in menso el programa se llena la memoria de tu hp bueno yo lo veo un poco dificil
- Inicie sesión o regístrese para enviar comentarios
Hola Severo no veo otra solución y es la única que se me vino a la mente
. Alguien tiene un avance pues debería reducirse los limites quizás del 0 al 100 pero igual lo veo extenso.
Salu2
- Inicie sesión o regístrese para enviar comentarios
Una vez en clase de programación estructurada hicimos uno para números romanos,
Por lo que veo el tema es viejo, así que como no hay prisa quizás cuando acaben mis exámenes le echemos galleta jajaja
Saludos
- Inicie sesión o regístrese para enviar comentarios
Solo hemos recibido la propuesta de Edwin alguien se le mide a realizarlo de otra manera??
- Inicie sesión o regístrese para enviar comentarios
www.gaak.org
- Gaak -
- Inicie sesión o regístrese para enviar comentarios
No podía ser otro que Gaak...
Si bien no es para las HP, lo probé y funciona muy bien.
- Inicie sesión o regístrese para enviar comentarios
.Todavía no hay ninguna solución en UserRPL?
- Inicie sesión o regístrese para enviar comentarios
Veo que este tema es antiguo.
No veo la solución de Edwin pero a mi se me ocurre descomponer el numero en unidades, decenas, centenas, unidades de mil, etc. y asociarle a cada descomposición el nombre respectivo.
Bien, trabajeré en esto.
- Inicie sesión o regístrese para enviar comentarios
yo creo que si haaa , me diste una idea amigo , si descomponiendo en unidades podria ser el camino probare por mi lado tambien
- Inicie sesión o regístrese para enviar comentarios
Envío nuevamente la propuesta que había hecho. No se porque me lo habían borrado.
conversor
- Inicie sesión o regístrese para enviar comentarios
Estimado Edwin su solucion es muy buena, el algoritmo que uso era el que tenia en mente, de pronto se pueda mejorar pero para mi esta bien. Lo que me asombra es que siempr eres el primero en dar respuesta, yo voy viendo el post y mientras lei los comentarios pensaba como hacerlo hasta que llegue a tu respuesta la probe y me parece bien jhejejejejej
Salu2
- Inicie sesión o regístrese para enviar comentarios
Edwin, su comentario antiguo como el de muchos usuarios se vieron afectados cuando el sitio tuvo un problema en la base de datos, es por eso que no aparecen muchos comentarios, los que datan de esas fechas.
Recuerdo también que se perdieron todos los primeros comentarios de CalculadorasHP.org
Saludos.
- Gaak -
- Inicie sesión o regístrese para enviar comentarios
Bien Edwin también ya tenía algo muy parecido a tu codigo pero trabajando con string y a puros HEAD y TAIL formando el numero, en vez de los IP y FP que tu usas, pero en el fondo trabajan muy parecido. Me a costado terminarlo, estoy algo fuera de práctica en esto de la programación.
Que mal que se hallan perido los temas antiguos, siempre se hallan cosas interesantes en estos.
- Inicie sesión o regístrese para enviar comentarios
Hola soy nuevo aqui y nuevo en el uso de estas calculadoras, pero todo esto me parece emocionante y propongo esta solucion.
Que tal convertir a una cadena de caracteres el número. Luego contamos el número de dígitos presentes y vamos formanndo el nombre del numero contando desde unidades, decenas, centenas, etc, en forma regresiva. Entonces el programa solo tendria que almacenar los nombres de las cifras "uno", "dos", "tres", etc, y los de "cien", "mil", "diez mil", etc.
Asi un numero tiene la forma
d1 d2 d2 d3 d4 ... dn Siendo las "d" los digitos.
Si el numero es de tres digitos es del orden de las centenas, entonces
el programa tendría que comprobar que digito es el primero de izquierda a derecha y unir la cadena correspondiente. Por ejemplo
305
Como son tres digitos es del orden de las centenas
Entonces el programa empieza desde las centenas hacia atrás revisando cada digito.
Prueba el primer dígito y comprueba que es un tres, entonces une la cadena "tres" con la cadena "cientos". Si en algun momento hay un cero no hace nada y continua, pero disminuyendo el orden siendo el siguiente (en este caso decenas) un orden menor. Lo hace asi hasta llegar a las unidades.
En cada paso el programa solo une las cadenas correspondientes al orden del digito con las correspondientes al nombre del dígito.
Bueno esa es toda mi propuesta. Si aquí hay algun ingeniero en sistemas, informática o similar seguro propondrá algo mejor, pero al menos es un comienzo.
Bueno nos vemos.
- Inicie sesión o regístrese para enviar comentarios
Hola queridos Amigos AdictosHP!!!!
La solución del amigo Edwin es una primera aproximación pero muy limitada, puesto que si queremos traducir un número entero muy grande como el siguiente "15936535897932384626433832795" su traducción sería "quince mil novecientos treinta y seis cuatrillones quinientos treinta y cinco mil ochocientos noventa y siete trillones novecientos treinta y dos mil trescientos ochenta y cuatro billones seiscientos veintiséis mil cuatrocientos treinta y tres millones ochocientos treinta y dos mil setecientos noventa y cinco"
Y precisamente en esos casos de números enteros grandes falla el algoritmo de el Amigo Edwin...
Estoy trabajando desde hace tiempo en un algoritmo optimizado para solucionar satisfactoriamente este valioso desafío muy antiguo de traducción de cantidades numéricas a letras. Dentro de poco subiré mi aporte, pero les voy adelantando que requieren tres programas y la entrada es un objeto string que representa el número a traducir.
Hasta la próxima mis queridos Amigos AdictosHP!!!!
Saludos a todos.
- Inicie sesión o regístrese para enviar comentarios
Amigo Zuaritx tienes razón que la solución del Amigo Edwin cumple perfectamente los requisitos iniciales propuestos y que lo que yo propuse anteriormente es una generalización del desafío inicial.
También tienes razón que se puede realizar en un único programa una determinada tarea, pero también es cierto que el famoso dicho de "DIVIDE Y VENCERAS" es muy reconocido y aplicable en el mundo de la programación.
A mi se me ocurrió desarrollar este desafío utilizando este principio rector, si vos no lo deseas utilizar, puedes hacer como gustes.
No me parece correcto considerar a lo números enteros negativos, puesto que la traducción a letras sería idéntica que para el mismo número entero positivo, salvo el signo "MENOS".
Propongo que para este desafío de traducción de cantidades numéricas a letras se consideren los números desde el cero en adelante.
También es importante que la cadena de traducción esté perfectamente traducida, con la longitud exacta, sin ningún espacio en blanco de más ni de menos.
Saludos cordiales para todos mis queridos Amigos AdictosHP!!!!
- Inicie sesión o regístrese para enviar comentarios
El comentario es viejo. Ademas un numerote tal como 2 ^ 32 no tiene sentido decirlo con palabras, se pasa de los billones, por esos es que exite la notacion cientifica
- Inicie sesión o regístrese para enviar comentarios
Bueno, he modificado mi post anterior.. Bienvenidos los comentarios..
www.gaak.org
- Gaak -
- Inicie sesión o regístrese para enviar comentarios
Retiro lo que dije de un numero muy grande. El programa de Gaak es increible, eso demuestra que es un super genio, me inclino frente el.
- Inicie sesión o regístrese para enviar comentarios
Mis sinceras felicitaciones estimado amigo Gaak... tu solución cumple los requisitos del problema... pero el amigo Edwin fue el único que lo plasmó en código USER-RPL, cuál fue la idea original de este desafío... no valen soluciones con otros lenguajes de programación que no sea USER-RPL.
Saludos para todos mis queridos amigos AdictosHP!!!
- Inicie sesión o regístrese para enviar comentarios
Nsiquiera el sistem, creo que un problema asi es mejor tratarlo en system, para que seamas rapido el proceso para la maquina
- Inicie sesión o regístrese para enviar comentarios
Hola a todos mis queridos amigos AdictosHP!!!...
Por fin llegó el día... uff.. después de tanto trabajo puede ver la luz mi aporte que les tenía pendiente en este maravilloso desafío, que como creador del mismo, aprovecho tambien la oportunidad para agradecerles a todos mis querdidos amigos AdictosHP que realizaron sus valiosos aportes.
Bueno, sin más, ahora mismo procedo a explicarles mi solución:
Buscando en la web, encontré que existen 2 formas de traducción de un número entero en las letras de su número cardinal: formato corto y formato largo.
Yo utilice el formato largo, puesto que es el que se utiliza en Argentina y creo que en el resto de Latinoamérica también.
Cómo es un programa bastante complejo para realizarlo en único objeto programa (<< >>) en UserRPL, decidí usar la siempre valiosa técnica de "divide y vencerás" y por esa razón la solución de este desafío de traducción de cantidades numéricas a letras tiene 3 objetos programa llamados TN (Traducción de Número), TP (Traducción de Periodo) y TC (Traducción de Clase).
El programa TC es recursivo y traduce a letras 1 Clase (grupo de 3 dígitos decimales por ej. "287").
El programa TP no es recursivo y traduce a letras 1 Periodo (grupo de 6 dígitos decimales por ej. "167287". La relación es -> 1 Periodo = 2 Clases)
El programa TN no es recursivo y traduce a letras 1 Número entero (grupos de N periodos por ej. "23167287")
Luego de esta pequeña introducción, procedo a presentarles la solución:
Programa TC (Programa Base)
Programa TP (Programa que usa TC)
Programa TN (Programa Principal que usa TP)
Espero que les haya gustado la solución y los animo a seguir contribuyendo en este magnífico portal de Calculadoras HP.
Saludos para todos mis queridos amigos AdictosHP!!!!
- Inicie sesión o regístrese para enviar comentarios
Por favor Orly puedes incluir el código en formato de HPuserEdit, de esta manera puedo probarlo en el emu48, sin necesidad de enviarlo a la HP50g
- Inicie sesión o regístrese para enviar comentarios
Hola amigo AdictoHP CompSystems!!!
No hace faltan los archivos del código fuente en formato HPUser Edit para probar la solución del desafío en el emulador puesto que en el archivo comprimido que comparto (link de Código Fuente Completo) se encuentran los 3 archivos binarios (TC.hp, TP.hp y TN.hp) que pueden ser cargardos directamente en el emulador mediante la opción "Load Object".
Saludos cordiales para todos mis queridos amigos AdictosHP!!!!...
- Inicie sesión o regístrese para enviar comentarios






















Hola Estimados Amigos Jhusel y Severo!
Tiene razón mi amigo Severo, el código fuente del algoritmo debería ser corto, no tendría sentido escribir un programa que fuese más "pesado" que el "peso" del propio resultado o solución.
Amigo Jhusel, con todo respeto, considero tu propuesta de solución a este desafío como una simple broma de amigos.
La verdadera solución va por otro lado.
Les propongo resolver este desafío entre todos. Qué les parece?
Cómo es más complicado que el resto de los minidesafíos que se plantearon anteriormente, tratemos de esbozar alguna solución "seria" (no se aceptan las bromas) y sobre ella ir haciendo continuas mejoras u optimizaciones para ver si logramos llegar, entre todos, al verdadero código buscado.
Vamos mis estimados Amigos AdictosHP, a mover las neuronas!
Saludos!
Orly
"Cuando el entendimiento se enturbia, la fe es el filtro que potabiliza nuestra mente."