Separar digitos de un numero

Iniciado por vaXy, 26 Marzo 2009, 13:38 PM

0 Miembros y 1 Visitante están viendo este tema.

vaXy

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

-Ramc-

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.

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

TheMaker



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.
Gibe money please or I report you

vaXy

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");
   
}

ghenaro

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

тαптяα

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

cypascal

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.
Problemas interesantes de programación en C/C++ y Pascal en:
BLOG C/C++


WWW.CYPASCAL.BLOGSPOT.COM.ES