Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Rugan en 24 Noviembre 2015, 02:52 am



Título: Problema con funciones definidas por el programador
Publicado por: Rugan en 24 Noviembre 2015, 02:52 am
El tema es que quiero hacer un programa en C++ que haga lo siguiente:

1. Introduzco un número
2. Suma los dígitos de ese número que he introducido. Ejemplo: si introduzco 34, pues suma 3 + 4 = 7.
3. Vuelve a sumar los dígitos de la suma anterior en caso de esta suma vuelva a tener más de un dígito (es decir en caso de que sea mayor que 9). Ejemplo: si introduzco 445, pues suma 4 + 4 + 5 = 13 (como en el paso 2) y luego además suma 1 + 3 = 4, ya que 13 > 9. Y quiero que lo haga repetidamente hasta que ya no puedan salir más números de dos cifras en la suma.

Para ello quiero usar funciones. La primera parte (hasta 2) me sale, pero el punto 3 no consigo hacerlo. He intentado llamar a la función sumacifras (la funcion que hace el punto 2) desde la función digitomagico (la que quiero que haga el punto 3) para hacer algo con while pero parece ser que no se puede. ¿Alguien me explica cómo se hace? aquí dejo lo que tengo:

Código
  1. #include <iostream>
  2. using namespace std;
  3. int sumacifras(int numero);
  4. int digitomagico();
  5.  
  6. int main()
  7. {
  8. int numero;
  9.  
  10. cout << "Introduce un entero positivo: ";
  11. cin >> numero;
  12.  
  13. cout << "La suma de los digitos es: " << sumacifras(numero) << endl;
  14. cout << "El digito magico es: " << digitomagico() << endl;
  15.  
  16. system("pause");
  17. return 0;
  18. }
  19.  
  20. int sumacifras(int numero)
  21. {
  22. int suma = 0;
  23.  
  24. while (numero != 0){
  25. suma = suma + (numero % 10);
  26. numero = (numero / 10);
  27. }
  28.  
  29. return suma;
  30. }
  31.  
  32. int digitomagico()
  33. {
  34.  
  35. }
  36.  


Gracias de antemano


Título: Re: Problema con funciones definidas por el programador
Publicado por: class_OpenGL en 24 Noviembre 2015, 04:53 am
Lo que yo haría es esto:

Código
  1. int digitomagico(int numero) {
  2.    int suma = 10; // Para poder entrar en el bucle
  3.  
  4.    while(suma >= 10) {
  5.        suma = 0; // Tenemos que resetear la suma en cada iteracion
  6.  
  7.        while (numero != 0){ // Calculamos la suma de todas las cifras
  8.            suma += numero%10;
  9.            numero /= 10;
  10.        }
  11.  
  12.        numero = suma; // Igualamos el numero pues lo usaremos para comprobar en la siguiente iteracion
  13.    }
  14.  
  15.    return numero;
  16. }

Está comprobado con el ejemplo que pones :D


Título: Re: Problema con funciones definidas por el programador
Publicado por: Rugan en 24 Noviembre 2015, 12:12 pm
Ya entiendo, me había obsesionado con hacerlo de otra forma y no me había dado cuenta de que era así de fácil. Gracias!