• Domingo 15 de Diciembre de 2024, 02:46

Autor Tema:  Re: 45481  (Leído 2037 veces)

emmanuel

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: 45481
« en: Lunes 22 de Abril de 2002, 00:42 »
0
como hacer un programa en el cual yo escriba un numero cualquiera menor a 10000 y me lo ponga en letra

ToTeX

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
    • http://www.totex.cl
Re: 45481
« Respuesta #1 en: Martes 23 de Abril de 2002, 23:24 »
0
Por lo ke entendi quieres pasar un numero a una cadena. El problema mayor que podrias tener es reservar un espacio de memoria suficiente para guardar la cadena, lo demas es trivial.

Si tu numero como maximo es mil basta con que hagas un array de 5 chars:

char array[5]; /*un elemento mas para el caracter nulo*/
array[5]='0'; /*con eso indicas fin de cadena*/

Luego haces una iteracion, en cada vuelta debes ir dividiendo el numero por 10 y colocando el resto de la division en array[4], arra[3], array[2] etc, la conversion de int a char es tirivial igual, solo necesitas un switch o un conjunto de if de la forma:

if (resto==4) char=='4';

Haces las condiciones para todos los numeros de 0 a 9, y eso es todo. Si kieres algo mas completo puedes hacer un puntero a char y reservarle memoria con malloc, asi puedes pasar cualkier numero sin importar su largo de digitos. Tambien podrias establecer una relacion entre el numero ascii de los digitos y los numeros, creo que el ascii del '0' es 48, entonces tomas el digito y le sumas 48 y lo guardas en el char y tendras el ascii correspondiente al digito, como los chars de 0 a  estan consecutivos en la tabla ascii funciona.
Salu2... ToTeX
[ www.totex.cl ]

LamKros

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
    • http://www.lamkros.com
Re: 45481
« Respuesta #2 en: Lunes 1 de Julio de 2002, 14:18 »
0
#include <iostream.h>
#include <stdlib.h>

int main()
{int i;
char numero[4];
numero[4]=char(0);
int num;
cout <<"Introduce el numero menor de 1000: ";
cin >> num;
if (num <1000)
{
i=3;
while (i>=0)
{
numero=char(48 + (num % 10));
num = num / 10;
--i;
}
cout <<"El numero introducido es " <<numero <<endl; //no se porque imprime caracteres raros
}
else
{
cout <<endl <<" He dicho menor de 1000 >:("<<endl;
}


      system("PAUSE");
      return 0;
}

LamKros

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
    • http://www.lamkros.com
Re: 45481
« Respuesta #3 en: Martes 17 de Diciembre de 2002, 22:10 »
0
//Aqui esta el programa que funciona

// Programa que pasa un numero < 1000 a cadena
// de caracteres.

/*
El proceso que haría  este programa
para el ejemplo del numero 832:

NUMERO MENOR QUE 1000?
 |
SI
 |
 832 : 10 = 83.2 -> numero[3] = 2 (ascii 48 + 2)
 83  : 10 = 8.3  -> numero[2] = 3 (ascii 48 + 3)
 8   : 10 = 0.8  -> numero[1] = 8 (ascii 48 + 8)
 0   : 10 = 0    -> numero[0] = 0 (ascii 48)

 por lo que  nos queda un array con:
 
 --------------------------
 | 0 | 8 | 3 | 2 | char(0) |
 --------------------------
*/



#include <iostream.h>
#include <stdlib.h>

int main()
{ int i;
char numero[5]; // longitud de la cadena + 1

int num; // aqui recogemos el numero
cout << "Introduce el numero menor de 1000: ";
cin >> num;

if (num <1000)
{

/* descuartizamos el numero
y metemos cada digito en una
posicion del array
*/  
i=3 ;
while (i >= 0)
{  
numero = char(48 + (num % 10));
num = num / 10;
i = i-1;
}
numero[4]=char(0); // colocamos el fin de cadena

cout <<"El numero introducido es " << numero <<endl;
}
else
{
cout <<endl << " He dicho menor de 1000 " <<endl;
}

system("PAUSE");
return 0;
}

De Profundiis

  • Miembro activo
  • **
  • Mensajes: 89
    • Ver Perfil
45481
« Respuesta #4 en: Miércoles 18 de Diciembre de 2002, 01:23 »
0
Hola,
me da a mí que esa función ya está implementada en la librería <stdio.h>. Ahora, si te quieres dar el placer de hacerlo por tu cuenta (que me parece un buen método de aprendizaje) la solución de LamKros creo que está correcta.:)

con sprintf() puedes hacerlo, por ejemplo.

Saludos.