Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: HIDE_95 en 4 Agosto 2015, 20:31 pm



Título: Programa Numeros Perfectos C++
Publicado por: HIDE_95 en 4 Agosto 2015, 20:31 pm
Buenas compañeros. Tengo una pequeño problema en el que me he quedado atrancado .... Se trata de este ejercicio:
  Un numero perfecto es un numero natural cuyo valor coincide con la suma de todos sus divisores propios,
es decir todos sus divisores menores que el (incluido el 1). Por ejemplo, el numero 28 se dice que es un
numero perfecto porque su valor coincide con la suma de sus divisores: 28 = 1 + 2 + 4 + 7 + 14
.
  Escribir un programa en C++ que lea por teclado un numero de cifras (mayor que 1) e imprima por pantalla el primer numero perfecto con ese numero de cifras o, en caso de que no exista, imprima un
mensaje indicando que no existe un numero perfecto con ese numero de cifras.


Aqui esta el algoritmo que yo cree , pero no me funciona. Me deja compilarlo pero al poner el numero de cifras deseado no me saca nada por pantalla... Podriais indicarme un poco en que he fallado , gracias :)

Código
  1. #include <iostream>
  2. #include <math.h>
  3.  
  4. using namespace std ;
  5.  
  6. int main ()
  7. {
  8. unsigned n , b , a , perf ;
  9. cout << "Introduzca el numero de cifras: " ;
  10. cin >> n ;
  11. b = pow ( 10 , n) - 1 ;
  12. perf = 0 ;
  13. for ( unsigned i = pow(10 , (n-1)) ; i <= b ; i++ )
  14. {
  15. for (unsigned j = 2 ; j <= i ; j++ )
  16. {
  17. if ( (i % j) == 0 )
  18. {
  19. a = i / j ;
  20. perf = a + perf ;
  21.  
  22. }
  23. }
  24. if ( perf == i )
  25. {
  26. cout << "Numero perfecto: " << perf << endl ;
  27.  
  28. }
  29. }
  30.  
  31. }


Mod: Los códigos deben ir en etiquetas GeSHi


Título: Re: Programa Numeros Perfectos C++
Publicado por: engel lex en 4 Agosto 2015, 21:06 pm
lo de la linea 12

Código:
perf = 0 ;

está fuera del ciclo... así que nunca se reiniciará... debe reiniciarse a 0 con cada nuevo "i" (es decir pasa linea 13 para linea 12 y linea 12 para 13)


Título: Re: Programa Numeros Perfectos C++
Publicado por: HIDE_95 en 4 Agosto 2015, 21:34 pm
Muchisimas gracias... Llevo toda la tarde buscandole el fallo