Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/03/2014, 06:09
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 4 meses
Puntos: 83
Respuesta: Pasar de 1 a "uno"

Hay un 'algoritmo' para calcular cada posicion (unidad, decena, centena, etc), es este:

Código C:
Ver original
  1. unidad = (numero % 10);
  2. decena = ((numero % 100) - (numero % 10)) / 10;
  3. centena = ((numero % 1000) - (numero % 100)) / 100;
  4. etc...

Ahora ya sabes como recuperar cada posicion. Ademas tambien sabes que los guarismos de cada posicion solo van del 0 al 9, entonces te creas una lista de textos ordenados segun los valores de los numeros:

Código C:
Ver original
  1. static char *TEXTOS[6] = {
  2.     "cero", "uno", "dos", "tres", "cuatro", "cinco"
  3. };

Pongo solo 6, tienes que completarlo hastra el nueve que seran los 10 textos. Ahora serializas el 'algoritmo' que te comente arriba y recuperas cada parte:

Código C:
Ver original
  1. int numero = 15423;
  2. int q, ciclo, cpow, ppow;
  3.  
  4. ciclo = 0;
  5. while(1) {
  6.  
  7.     //calculas las potencias para el algoritmo
  8.     cpow = (int)ceil(pow(10, ciclo+1));
  9.     if((ppow = (int)ceil(pow(10, ciclo))) < 10) {
  10.         ppow = 0;
  11.     }
  12.  
  13.     //unidades
  14.     q = numero % cpow;
  15.  
  16.     //decenas, centenas, etc
  17.     if(ppow > 0) {
  18.         q -= numero % ppow;
  19.         q /= ppow;
  20.     }
  21.  
  22.     //final del numero
  23.     if(!q) break;
  24.  
  25.     //recuperas el numero de la lista de textos
  26.     printf("%s, ", TEXTOS[q]);
  27.  
  28.     ciclo++;
  29. }

A ver si te sirve de ayuda
Saludos
vosk