Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: vaXy en 26 Marzo 2009, 13:38 pm



Título: Separar digitos de un numero
Publicado por: vaXy 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


Título: Re: Separar digitos de un numero
Publicado por: -Ramc- 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.


Título: Re: Separar digitos de un numero
Publicado por: TheMaker 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.


Título: Re: Separar digitos de un numero
Publicado por: vaXy 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. }


Título: Re: Separar digitos de un numero
Publicado por: ghenaro 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


Título: Re: Separar digitos de un numero
Publicado por: тαптяα en 1 Diciembre 2012, 13:52 pm
Ahí arriba tienes un ejemplo, basandote en ese deberias saber hacerlo.


Título: Re: Separar digitos de un numero
Publicado por: cypascal 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.