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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Separar digitos de un numero
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Separar digitos de un numero  (Leído 36,382 veces)
vaXy

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Separar digitos de un numero
« en: 26 Marzo 2009, 13:38 pm »

Buenas a todos.
Tengo un problema al intentar separar los digitos de un numero que introduzcas de 5 digitos por ejemplo.
Tengo la idea pero no consigo realizarlo.
Aqui os dejo el codigo:

Código
  1. int main()
  2. {
  3.  
  4.          int numero,opcionValida,i;
  5.          char numeros[10];
  6.          printf("Porfavor introduzca un numero de 5 digitos: ");
  7.          do
  8.          {
  9.           fflush(stdin);
  10.           opcionValida=scanf("%i",&numero);
  11.           if (opcionValida!=1 || numero<10000 || numero>99999)
  12.           printf("Porfavor introduzca un numero valido: ");
  13.           }
  14.          while (opcionValida!=1 || numero<10000 || numero>99999);
  15.          printf("El numero introducido es el %i \n",numero);
  16.          for (i=0;i<5;i++)
  17.          {
  18.           numeros[i]=numero/(pow(10,i));
  19.           }
  20.          system("Pause");  
  21.  
  22. }

Lo que intento con la linea
Código
  1. numeros[i]=numero/(pow(10,i))
es dividir los numeros entre 10, 100 etc para que por ejemplo lo siguiente:
Introduzco:
12345
Apareceria:
1234
123
12
1

¿Hay algun modo de cojer el ultimo digito o de separar los numeros intentando usar este codigo o otro diferente?
Saludos y gracias


En línea

-Ramc-


Desconectado Desconectado

Mensajes: 495



Ver Perfil
Re: Separar digitos de un numero
« Respuesta #1 en: 26 Marzo 2009, 15:31 pm »

¿Hay algun modo de cojer el ultimo digito o de separar los numeros intentando usar este codigo o otro diferente?
Saludos y gracias
Si te refieres a tomar el número que se va perdiendo con cada división, lo haces con la operación de modulo(%).
12345 te guarda el 5 cuando lo divides entre 10 y tomas el residuo.

pow no divide, pow es para potencias.

Y bueno, lo del uso del fflush últimamente está tan repetido que no escribiré el porque de nuevo, pero, no debes usarlo.


En línea


Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.
TheMaker


Desconectado Desconectado

Mensajes: 514



Ver Perfil
Re: Separar digitos de un numero
« Respuesta #2 en: 26 Marzo 2009, 15:44 pm »

Código
  1.  
  2. precondicion: n ha de ser un numero de 5 cifras
  3.  
  4. int* separa (int n){
  5.  
  6. int* p = new (nothrow) int [5];
  7.  
  8. for(int i=10, j=0;j<5;j++) {p[j]=n%i; n/=10;}
  9.  
  10. return p;
  11.  
  12. }
  13.  
  14.  

te devuelve un puntero a un vector donde ya tienes los numeros separados, no lo he compilado pero deberia de servir.
En línea

Gibe money please or I report you
vaXy

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: Separar digitos de un numero
« Respuesta #3 en: 27 Marzo 2009, 00:37 am »

Lo consegui hacer aqui os dejo el codigo por si a alguien le interesa.
Gracias por las respuestas.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int main()
  5. {
  6.  
  7.          int opcionValida,numero,i,numerosA[4]={};
  8.          printf("Porfavor introduzca un numero de 5 digitos: ");
  9.          do
  10.          {
  11.           opcionValida=scanf("%i",&numero);
  12.           if (opcionValida!=1 || numero<10000 || numero>99999)
  13.           printf("Porfavor introduzca un numero valido: ");
  14.           }
  15.          while (opcionValida!=1 || numero<10000 || numero>99999);
  16.          printf("El numero es el %i.\n",numero);
  17.          for (i=4;i>=0;i--)
  18.          {
  19.            numerosA[i]=numero/pow(10,i);
  20.            numerosA[i]%=10;        
  21.           }        
  22.          for (i=4;i>=0;i--)
  23.          {              
  24.           printf("%i ",numerosA[i]);
  25.           }              
  26.          system("Pause");
  27.  
  28. }
En línea

ghenaro

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Separar digitos de un numero
« Respuesta #4 en: 1 Diciembre 2012, 13:48 pm »

disculpen pero me podria ayudar a como separar los digitos de un numero entero de mas de cuatro digitos serian muy amables al ayudarme gracias
En línea

тαптяα


Desconectado Desconectado

Mensajes: 1.151


Sic utere tuo ut alienum non laeda


Ver Perfil WWW
Re: Separar digitos de un numero
« Respuesta #5 en: 1 Diciembre 2012, 13:52 pm »

Ahí arriba tienes un ejemplo, basandote en ese deberias saber hacerlo.
En línea

cypascal

Desconectado Desconectado

Mensajes: 42


Ver Perfil WWW
Re: Separar digitos de un numero
« Respuesta #6 en: 1 Diciembre 2012, 16:17 pm »

Si es un numero decimal entero, basta con dividir por potencias 10 para ir obteniendo cada digito (division entera).
Si esta en otra base, base n-ésima, se divide por potencias de n y ya.
En línea

Problemas interesantes de programación en C/C++ y Pascal en:
BLOG C/C++


WWW.CYPASCAL.BLOGSPOT.COM.ES
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Separar numeros en digitos individuales
Programación C/C++
dmacias 8 157,351 Último mensaje 14 Noviembre 2018, 02:45 am
por Beginner Web
Funcion Separar Digitos de un numero
Programación C/C++
Ja_90 3 7,218 Último mensaje 1 Octubre 2015, 01:21 am
por 0xFer
¿Cómo separar un numero binario en digitos?
Programación C/C++
Sherboc 7 9,871 Último mensaje 24 Junio 2016, 02:30 am
por AlbertoBSD
Separar un numero de 16 digitos
Programación C/C++
Miguelito 3 2,895 Último mensaje 5 Mayo 2019, 01:58 am
por K-YreX
Separar los dígitos impares de un numero con guion
Programación C/C++
dpn 2 4,178 Último mensaje 20 Agosto 2021, 21:02 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines