Test Foro de elhacker.net SMF 2.1

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:


int main()
{

          int numero,opcionValida,i;
          char numeros[10];
          printf("Porfavor introduzca un numero de 5 digitos: ");
          do
          {
           fflush(stdin);
           opcionValida=scanf("%i",&numero);
           if (opcionValida!=1 || numero<10000 || numero>99999)
           printf("Porfavor introduzca un numero valido: ");
           }
          while (opcionValida!=1 || numero<10000 || numero>99999);
          printf("El numero introducido es el %i \n",numero);
          for (i=0;i<5;i++)
          {
           numeros[i]=numero/(pow(10,i));
           }
          system("Pause"); 
   
}


Lo que intento con la linea
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
Cita de: eipock en 26 Marzo 2009, 13:38 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


precondicion: n ha de ser un numero de 5 cifras

int* separa (int n){

int* p = new (nothrow) int [5];

for(int i=10, j=0;j<5;j++) {p[j]=n%i; n/=10;}

return p;

}



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.


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
   
          int opcionValida,numero,i,numerosA[4]={};
          printf("Porfavor introduzca un numero de 5 digitos: ");
          do
          {
           opcionValida=scanf("%i",&numero);
           if (opcionValida!=1 || numero<10000 || numero>99999)
           printf("Porfavor introduzca un numero valido: ");
           }
          while (opcionValida!=1 || numero<10000 || numero>99999);
          printf("El numero es el %i.\n",numero);
          for (i=4;i>=0;i--)
          {
            numerosA[i]=numero/pow(10,i);
            numerosA[i]%=10;       
           }       
          for (i=4;i>=0;i--)
          {             
           printf("%i ",numerosA[i]);
           }               
          system("Pause");
   
}
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.