lunes, 5 de mayo de 2014

Dividir en cifras un número. C++

Buenas gente, hoy os traigo algo facilito debido a que ya he visto a muchos 'novatillos' en la web preguntando como se hace esto. Lo que voy a hacer es coger un número y dividirlo en sus cifras separadas. Para ello primero haré una función que me devuelva el número de cifras del número y otra que vaya calculándolos.
#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.

8 comentarios:

  1. hay alguna otra forma un poco mas sencilla? algo para novatos

    ResponderEliminar
    Respuestas
    1. Buenas Nelfre.
      ¿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;)

      Eliminar
  2. 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?

    ResponderEliminar
    Respuestas
    1. Buenas.
      Para 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;)

      Eliminar
  3. Hola, 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.

    ResponderEliminar
    Respuestas
    1. Si nos pusieras cuál es el error que te da nos sería más facil responderte.

      Saludos;)

      Eliminar
  4. como separar los digitos de un numero cualquiera

    ResponderEliminar