• Jueves 28 de Marzo de 2024, 20:47

Autor Tema:  Problema para separar numeros en sus digitos  (Leído 41900 veces)

Raideolo

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Problema para separar numeros en sus digitos
« en: Viernes 14 de Marzo de 2014, 00:07 »
0
Holas soy nuevo por estos lados y quisiera saber si me pueden ayudar con un problema que tengo, por mas que he buscado por internet no puedo encontrar una respuesta clara, yo estoy programando c++ con code blocks y tengo problema con un algoritmo. Bueno mi problema es el siguiente necesito poder separar un numero(independiente de los digitos que tenga el numero. Ej: 1,123,1234,12345, etc) en sus digitos. Yo estaba usando esto:
 while(a!=0)
    {
        b=a%10;
        a=a/10;
        return b;

    }
(a es el numero que quiero separar)

chenech

  • Miembro activo
  • **
  • Mensajes: 96
    • Ver Perfil
Re:Problema para separar numeros en sus digitos
« Respuesta #1 en: Viernes 14 de Marzo de 2014, 00:51 »
0
Hola, no entiendo lo que quieres separar, por ejemplo 1,123,1234,12345 como lo quieres separar, por las comas?

Raideolo

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re:Problema para separar numeros en sus digitos
« Respuesta #2 en: Viernes 14 de Marzo de 2014, 01:04 »
0
Hola :D, por ejemplo si yo ingreso el numero 4567 al separarlo me tiene que quedar 4 5 6 7 (separarlos por espacio), es que ademas ese es el primer paso de lo que tengo que hacer, porque despues de separarlos(obviamente mostrando los numeros por separados) tengo que sumarlos y ademas invertir el numero (segun el ejemplo anterior: 7654)
« última modificación: Viernes 14 de Marzo de 2014, 01:06 por Raideolo »

chenech

  • Miembro activo
  • **
  • Mensajes: 96
    • Ver Perfil
Re:Problema para separar numeros en sus digitos
« Respuesta #3 en: Viernes 14 de Marzo de 2014, 01:08 »
0
OK, que compilador de C++ usas?

Raideolo

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re:Problema para separar numeros en sus digitos
« Respuesta #4 en: Viernes 14 de Marzo de 2014, 01:10 »
0
GNU GCC

chenech

  • Miembro activo
  • **
  • Mensajes: 96
    • Ver Perfil
Re:Problema para separar numeros en sus digitos
« Respuesta #5 en: Viernes 14 de Marzo de 2014, 01:35 »
0
Habran otras formas mas elegantes de hacerlas, peso asi rápido, se me ocurre esta, espero te sirva, un saludo.

Código: [Seleccionar]
int iNumero;
char cCadena[10];
printf("Teclee el numero: ");
scanf("%d",&iNumero);
itoa(iNumero, cCadena, 10);
for(int i=0;i<strlen(cCadena);i++)
printf("%c ", cCadena[i]);
printf("\n");
for(int i=strlen(cCadena)-1;i>-1;i--)
printf("%c", cCadena[i]);
printf("\n");

nachete_222

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re:Problema para separar numeros en sus digitos
« Respuesta #6 en: Viernes 14 de Marzo de 2014, 03:55 »
0
Pero te ha dicho que en C++ y le has contestado en C

Ahí va una solución. Yo te pongo un programa para resolver un numero de 5 digitos exactamente y tu te lo trabajas para numeros que tengan cantidades arbitrarias de numeros.

Código: [Seleccionar]
// separa los digitos de un numero
#include <iostream>
using namespace std;

// la función main comienza la ejecución del programa
int main()
{
int num1;  // número que introduce el usuario

cout << "Digite un numero de 5 digitos: ";
cin >> num1;

cout << "\n" << num1 / 10000 << "   " << num1 % 10000 / 1000 << "   "
     << num1 % 1000 / 100 << "   " << num1 % 100 / 10 << "   "
<< num1 % 10 << endl;

return 0; // indica que el programa terminó satisfactoriamente

} // fin de la función main

La explicación es la siguiente:
si tu numero tiene 5 digitos buscas la unidad seguida de ceros que tenga 5 digitos, en este caso 10000, al dividir por 10000 te separa el primer numero y lo imprimes.
para el siguiente numero haces el "modulo" (%) de 10000 y esto te deja de resto 4 digitos que los divides por la unidad seguida de ceros que tenga 4 digitos, osea 1000,
el tercer paso es similar al segundo haces el "modulo" de 1000 para quedarte con solo 3 digitos y los divides por unidad seguida de ceros con 3 digitos en total, osea 100....
y asi sucesivamente....
¡Espero haberme explicado bien!

Un saludo
Nacho