SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: Raideolo en Viernes 14 de Marzo de 2014, 00:07
-
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)
-
Hola, no entiendo lo que quieres separar, por ejemplo 1,123,1234,12345 como lo quieres separar, por las comas?
-
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)
-
OK, que compilador de C++ usas?
-
GNU GCC
-
Habran otras formas mas elegantes de hacerlas, peso asi rápido, se me ocurre esta, espero te sirva, un saludo.
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");
-
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.
// 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