• Sábado 14 de Diciembre de 2024, 22:05

Autor Tema:  C++ ---> Numeros Perfectos  (Leído 4909 veces)

ultraviolet

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
C++ ---> Numeros Perfectos
« en: Lunes 17 de Diciembre de 2007, 00:01 »
0
Wenas!necesito ayuda.Tengo q acer1programa que imprima los nº perfectos que hay del 1 al 1000 y sus FACTORES. No se como hacerlo.
El problemas no es imprimirlos del 1 al 1000. Si no imprimir sus factores, puesto que dentro del for donde compruebo los factores que tiene, luego los sumo y fuera veo si es o no perfecto el num introducido, de tal modo que ya no tengo acceso  a factores.
Si a alguien se le ocurre algo, se lo agradeceria muchisimo.
Lo he realizado para que te saque si un nº es perfecto, xo de la otra forma no se me ocurre.aki os dejo lo que he exo, a ver si a alguien se le ocurre el q tngo q realizar.
MUCHISIMAS GRACIAS

int main()
{
int n;

cout << "Introduce numero: " << endl;
cin >> n;

perfecto(n);

system("PAUSE");
return 0;
}


void perfecto(int n)
{
int suma, i, res;
suma = 0;

for(i = 1; i < n ; i++)
{
if(n % i == 0)
suma += i;
}

if(suma == n)
cout << "El numero es perfecto " << endl;
else
cout << "El numero NO es perfecto " << endl;

return;
}

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: C++ ---> Numeros Perfectos
« Respuesta #1 en: Lunes 17 de Diciembre de 2007, 19:45 »
0
Consejo, utiliza siempre [ code][ /code] (sin espacios) para poner codigo, hace que sea mas legible.

Creo que ya tienes todo lo que necesitas para hacerlo, si dices que ya sabes sacar los factores, solo necesitarias cambiar tu funcion perfecto para que te regrese true si el numero es perfecto, y false en caso contrario.

Código: Text
  1.  
  2. bool perfecto(int n)
  3. {
  4.     int suma, i, res;
  5.     suma = 0;
  6.  
  7.     for (i = 1; i &#60; n&#59; i++)
  8.     {
  9.         if (n % i == 0)
  10.             suma += i;
  11.     }
  12.  
  13.     if (suma == n)
  14.         return true;
  15.     else
  16.         return false;
  17. }
  18.  
  19.  

entonces, en donde sacas los factores, llamas a la funcion perfecto:

Código: Text
  1.  
  2. // Aqui iria el codigo para calcular los factores del numero, antes de determinar
  3. // si es perfecto o no
  4. bool resp;
  5. // La siguiente linea te determina si el numero es perfecto o no
  6. // en base a la funcion que te puse arriba
  7. resp = perfecto(n);
  8. if (resp == true) // si es perfecto
  9. {
  10.     cout &#60;&#60; &#34;El numero es perfecto &#34; &#60;&#60; endl;
  11.     // aqui imprimes los factores
  12. }
  13. else
  14. {
  15.     cout &#60;&#60; &#34;El numero NO es perfecto &#34; &#60;&#60; endl;
  16. }
  17.  
  18.  

O tambien podrias utilizar paso de parametros por referencia ;)
Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================