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:
#include <iostream>
using namespace std;
int sumacifras(int numero);
int digitomagico();
int main()
{
int numero;
cout << "Introduce un entero positivo: ";
cin >> numero;
cout << "La suma de los digitos es: " << sumacifras(numero) << endl;
cout << "El digito magico es: " << digitomagico() << endl;
system("pause");
return 0;
}
int sumacifras(int numero)
{
int suma = 0;
while (numero != 0){
suma = suma + (numero % 10);
numero = (numero / 10);
}
return suma;
}
int digitomagico()
{
}
Gracias de antemano
Lo que yo haría es esto:
int digitomagico(int numero) {
int suma = 10; // Para poder entrar en el bucle
while(suma >= 10) {
suma = 0; // Tenemos que resetear la suma en cada iteracion
while (numero != 0){ // Calculamos la suma de todas las cifras
suma += numero%10;
numero /= 10;
}
numero = suma; // Igualamos el numero pues lo usaremos para comprobar en la siguiente iteracion
}
return numero;
}
Está comprobado con el ejemplo que pones :D
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!