#include <iostream> #include <math.h> using namespace std; // Lo que hacemos es ir dividiendo el número entre 10, entre 100, entre 1000... Hasta que el número y el resto den lo mismo. int cuantasCifras(int numero) { int divisor = 10; int residuo = 0; int cifras_aux = 0; while (residuo != numero){ residuo = numero % divisor; divisor = divisor * 10; cifras_aux++; } cifras_aux--; return cifras_aux; } void dividir_en_digitos(int numero, int cifras) { int divisor = 10; int residuo = 0; int digito = 0; int cifras_aux = cifras; //Se eleva el divisor de forma que tenga el mismo número de cifras que nuestro número inicial divisor = pow(divisor, (cifras_aux)); cout << "divisor: " << divisor << endl; while (cifras_aux >= 0){ //El cociente son Digitos de izquiera a derecha digito = numero / divisor; //El residuo se convierte en el numero residuo = numero % divisor; numero = residuo; //El divisor disminuye divisor = divisor / 10; cout << "digito: " << digito << endl; cifras_aux--; } } int main() { int num; cout << "Ingrese un numero para mostrarlo separado en digitos: " << endl; cin >> num; dividir_en_digitos(num, cuantasCifras(num)); system("PAUSE"); return 0; }
Bueno, espero que no lo hayais visto demasiado difícil. De ser así os aconsejo que clickeeis aquí debajo en la etiqueta de 'Básico' y miréis ahí las entradas. Si tenéis dudas con el algoritmo avisadme ;)
Nos vemos.
hay alguna otra forma un poco mas sencilla? algo para novatos
ResponderEliminarBuenas Nelfre.
Eliminar¿Qué no entiendes exactamente?
Si lo que necesitas hacer es dividir un número en cifras ésta es la forma más simple que conozco.
Si te cuesta entenderlo quizás debieras ver antes otras prácticas más simples de C++ o intentar ver con papel y lápiz cómo se resuelve.
Saludos;)
Y si quisieras hacerlo con for como se haría? es que no se como se cogen las cifras del numero sin saber cuantas hay. En el ejemplo de arriba tu usas cifras_aux++ y despues cifras_aux-- y return cifras_aux, ¿eso lo utilizas para que ese valor vuelva a su valor inicial en cada bloque que has hecho?
ResponderEliminarBuenas.
EliminarPara usar un bucle for debes saber exactamente cuantas iteraciones quieres hacer (o hacer un bucle que sepas que seguro que se pasa e ir comprobando condiciones dentro, lo que lo haría más complejo). En este caso Lo mejor es un while.
Lo de restarle uno es simplemente porque vas probando hasta que el dividendo sea menor que el divisor. Cuando llegas a eso, el caso que te interesa es justo el anterior.
Saludos;)
okey, muchas gracias.
ResponderEliminarHola, al ejecuta el programa con un numero de tres digitos me da error, no se cuál sea el error, pero tengo el programa tal cual esta en la pagina.
ResponderEliminarSi nos pusieras cuál es el error que te da nos sería más facil responderte.
EliminarSaludos;)
como separar los digitos de un numero cualquiera
ResponderEliminar