Problema con funciones definidas por el programador

Iniciado por Rugan, 24 Noviembre 2015, 02:52 AM

0 Miembros y 1 Visitante están viendo este tema.

Rugan

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 (c++) [Seleccionar]

#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

class_OpenGL

#1
Lo que yo haría es esto:

Código (cpp) [Seleccionar]
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

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

Rugan

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!