elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Separar numeros en digitos individuales
0 Usuarios y 3 Visitantes están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Separar numeros en digitos individuales  (Leído 49,823 veces)
dmacias

Desconectado Desconectado

Mensajes: 41


Ver Perfil WWW
Separar numeros en digitos individuales
« en: 5 Enero 2014, 00:42 »

Hola a todos
Soy muy nuevo en esto de la programación, justo empece hace unos dias a aprender C y ya tengo mi primer problema asi que vengo a pedir consejo o alguna pista.

El libro que estoy siguiendo es el de deitel, la 4ª edicion y me quede atascado en el siguiente problema

Escriba un programa que introduzca un numero de cinco digitos, que separe el numero en sus digitos individuales y que despliegue los digitos separados entre si mediante 3 espacios cada uno. [Pista: Utilice combinaciones de la division entera y el operador modulo]

Lo llevo todo bastante bien por el momento, pero no se me ocurre el como puedo hacer para separar los digitos, supongo que mas que un problema con el lenguaje es de planteamiento, pero bueno. Por ahora el libro solo a tocado printf, scanf e if
Decir tambien que apenas tengo estudios y los que tengo son de la edad del bronce xD asi que no seais muy malos conmigo  :P

Un saludo


En línea

do-while


Desconectado Desconectado

Mensajes: 1.247


¿Habra que sacarla de paseo?


Ver Perfil
Re: Separar numeros en digitos individuales
« Respuesta #1 en: 5 Enero 2014, 01:09 »

¡Buenas!

Pues lo primero que tendrás que hacer es asegurarte que el número x introducido es de cinco cifras, es decir, que 10000 <= x <= 99999, si no es así, no tienes que hacer nada, ya que el problema solo te dice lo que tienes que hacer con números de cinco cifras, no con el resto.

Ahora el problema estaría en las matemáticas. Un numero es una suma de cifras entre 0 y 9 multiplicadas por potencias de 10:

- 23 = 2*10 + 3
- 146 = 1*100 + 4 * 10 + 6
- 6248 = 6 * 1000 + 2 * 100 + 4 * 10 + 8

Una vez que sabes, esto, tienes que acordarte del algoritmo de la división. dividendo = divisor * cociente + resto, y 0 < resto < divisor. (simplificando...)

si tengo un numero de tres cifras, abc, a = abc / 100, b = (abc % 100) / 10 y c = abc % 10 (recuerda que en C, si tanto el dividendo como el divisor son números enteros, la división da como resultado el cociente del algoritmo de la división entre enteros)

Ahora solo tienes que aplicar todo esto a un numero de cinco cifras.

¡Si te lías con el código avisa!

¡Saludos!


En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
SoyelRobert

Desconectado Desconectado

Mensajes: 46



Ver Perfil
Re: Separar numeros en digitos individuales
« Respuesta #2 en: 5 Enero 2014, 01:25 »

el truco esta en tener en cuenta que el operador /  toma el cociente de la division (parte entera)  y el % toma el resto.

con esto y lo que te han dicho arriba... lo tienes hecho :)
« Última modificación: 5 Enero 2014, 01:27 por SoyelRobert » En línea

getting louder!
dmacias

Desconectado Desconectado

Mensajes: 41


Ver Perfil WWW
Re: Separar numeros en digitos individuales
« Respuesta #3 en: 5 Enero 2014, 09:40 »

Muchas gracias a los dos, en cuanto os leí me puse a ello y ya está solucionado  ;-) . Veo que ando flojo en mates y logica.
Aqui os pego lo que ha salido

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. int numero, a, b, c, d, e;
  6.  
  7. printf("Escribe un numero entero con 5 digitos: ");
  8. scanf("%d", &numero);
  9.  
  10. if (numero >= 10000){
  11. if (numero <= 99999){
  12. a = numero / 10000;
  13. b = (numero % 10000) / 1000;
  14. c = (numero % 10000) % 1000 / 100;
  15. d = ((numero % 10000) % 1000) % 100 / 10;
  16. e = (((numero % 10000) % 1000) % 100) % 10;
  17.  
  18. printf("%d   %d   %d   %d   %d\n", a, b, c, d, e);
  19. }
  20. }
  21. return 0;
  22. }
  23.  

Y funcionar funciona ya puedo seguir estudiando pero no dudeis que me vereis por aqui todos los dias con dudas  ;D
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Separar numeros en digitos individuales
« Respuesta #4 en: 5 Enero 2014, 10:13 »

¿Y que pasa si el número tiene quince cifras?. Casi se te acabaría el abecedario, por no hablar de la longitud del código.

Este es un caso típico para usar un bucle o una función recursiva o, como en el caso que te propongo, tomar el número como cadena e ir transformando cada uno de los dígitos:

Citar

Escribe un numero de 20 digitos como maximo: 12345678901234567890
Digitos:   1  2  3  4  5  6  7  8  9  0  1  2  3  4  5  6  7  8  9  0



Código
  1. #include <stdio.h>
  2. #define N 19
  3.  
  4. int main( void )
  5. {
  6.   int c, i, n;
  7.   int digitos[N];
  8.   unsigned long long int num;
  9.  
  10.   printf( "Escribe un numero de %d digitos como maximo: ", N );
  11.   fflush( stdout );
  12.   num = 0;
  13.   for( n = 0; n < N && (c = getchar()) != '\n'; n++ )
  14.   {
  15.      digitos[n] = c - '0';
  16.      num *= 10;
  17.      num += digitos[n];
  18.   }
  19.   printf( "Digitos: " );
  20.   for( i = 0; i < n; ++i )
  21.      printf( " %3d,", digitos[i] );
  22.   return 0;
  23. }
  24.  

Claro que si lo que queremos es exclusivamente imprimir las cifras esto irá mejor, puedes meter cuantas cifras quieras:

Código
  1. #include <stdio.h>
  2. #define N 100
  3.  
  4. int main( void )
  5. {
  6.   int i, n;
  7.   char digitos[N];
  8.   printf( "Escribe un numero de %d digitos como maximo: ", N );
  9.   fflush( stdout );
  10.   scanf ("%s",digitos);
  11.   /*cuento los digitos*/
  12.   for (n=0;digitos[n]!='\0';n++);
  13.  /*los imprimo*/
  14.   for (i=0;i<n;i++)
  15.    printf ("%3c",digitos[i]);
  16.   return 0;
  17. }
  18.  

¡¡¡¡ Saluditos! ..... !!!!


« Última modificación: 5 Enero 2014, 10:44 por leosansan » En línea

dmacias

Desconectado Desconectado

Mensajes: 41


Ver Perfil WWW
Re: Separar numeros en digitos individuales
« Respuesta #5 en: 5 Enero 2014, 11:33 »

Supongo que todo eso que me comentas será mejor, solo tengo el problema que recien empiezo, jamas he visto #define, void, unsigned long long, fflush( stdout ), for, getchar, .........etc . Puro mandarin para mi ahora mismo  :rolleyes: jajajaja.

Solo he dado 2 temas del libro, en los que se ha visto solo printf, scanf, return e if, dar tipo y valor a una variable, comentarios, %d, \n, \t, etc....

creo no haberme dejado ninguno atras.

Un saludo
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Separar numeros en digitos individuales
« Respuesta #6 en: 5 Enero 2014, 12:03 »


¡¡¡Sorry, muchos sorry!!!

¡¡¡¡ Saluditos! ..... !!!!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Separar digitos de un numero
Programación C/C++
vaXy 6 27,479 Último mensaje 1 Diciembre 2012, 16:17
por cypascal
Funcion Separar Digitos de un numero
Programación C/C++
Ja_90 3 1,154 Último mensaje 1 Octubre 2015, 01:21
por 0xFer
(C) Separar los dígitos de un número
Programación C/C++
~[0xefro]~ 5 1,097 Último mensaje 30 Diciembre 2015, 06:04
por Gunhack
¿Cómo separar un numero binario en digitos?
Programación C/C++
Sherboc 7 1,688 Último mensaje 24 Junio 2016, 02:30
por AlbertoBSD
Separar dígitos individuales de una cifra de 4
Programación C/C++
TØtti 2 551 Último mensaje 5 Agosto 2016, 21:51
por TØtti
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines