Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jon_18 en 13 Agosto 2012, 22:54 pm



Título: programa que determine si numero es perfecto
Publicado por: jon_18 en 13 Agosto 2012, 22:54 pm
Hola, soy nuevo en el foro.

hasta ahora estoy empezando a conocer todo lo que es el lenguaje en c++, y necesito que por favor me ayuden a hacer un programa que determine si un numero es perfecto o no, y debo realizarlo aplicando el concepto de recursividad.

agradezco sus colaboraciones, gracias.


Título: Re: programa que determine si numero es perfecto
Publicado por: CSQCasimiro en 14 Agosto 2012, 00:13 am
si estas empezando, te doy un consejo cuando te encontras con un problema, antes de programar, pensa, "yo como ser humano,¿ como lo resuelvo ?" , una ves que ya lo tenes, solo estructuralo y dale un "paso a paso" , usando decisiones y repeticiones, y listo.


Título: Re: programa que determine si numero es perfecto
Publicado por: s00rk en 14 Agosto 2012, 01:45 am
Tampoco esta demas antes que nada leer la Wikipedia, o algun sitio que te muestre ejemplos de como saberlo y ya de ahi razonarlo y ver como lo harias en codigo, tambien en la wikipedia algunas veces al final muestran como hacerlo en codigo en diferentes lenguajes sino esta el que ocupas solo es cuestion de razonar elque te muestran y pasarlo al que tu deseas ...

Buscar no te matara ;D


Título: Re: programa que determine si numero es perfecto
Publicado por: jon_18 en 14 Agosto 2012, 02:11 am
tampoco es que no tenga ni las mas minima idea de como hacerlo, sino que no me salia y ps debo hacer 10 programas mas, y pasarlos a mano, por eso les pido la ayuda.


Título: Re: programa que determine si numero es perfecto
Publicado por: s00rk en 14 Agosto 2012, 03:24 am
si tienes la idea entonces pon aqui lo que hiciste y ahi si te podemos ayudar en lo que este mal, mas no te podemos dar el codigo asi nomas, porque no harias nada ... aqui estamos para ayudar mas no para hacerle las cosas a los demas desde 0.

Coloca aqui lo que hiciste y asi ya poder ayudarte.


Título: Re: programa que determine si numero es perfecto
Publicado por: Oblivi0n en 15 Agosto 2012, 17:28 pm
Como es un algoritmo matemático relativamente sencillo, el programa es "traducir" directamente la expresion

Definamos el número perfecto como todo numero tal que es igual a la suma de sus divisores positivos.

Vayamos desgranando:

Lo único que hay que comprobar  es que el número sea positivo, y luego, que sea la suma de sus divosres positivos:

-> Que sea positivo:

Código
  1. if(num > 0){
  2.  
  3. }

-> Que sea la suma de sus divisores: Esto es el sumatorio desde num-1 hasta 1, tal que num%i==0

Código
  1. int sumatorio = 0;
  2. for( int i = num-1;num >= 1;i--){ /* Sumatorio desde num-1 hasta 1*/
  3. if(num%i){
  4. sumatorio += i;
  5. }
  6. }

La funcion devolvera el valor 1 si el numero es perfecto, y 0 si no lo es:

Código
  1. if(sumatorio==num){
  2. return 1;
  3. }else{
  4. return 0;
  5. }

Y ahora jutamos todo:

Código
  1. #include <stdio.h>
  2.  
  3. int checkPerfect(int num);
  4.  
  5. int main(){
  6.  
  7. int num;
  8. int isPerfecto;
  9. printf("Introduzca un numero:\n");
  10. scanf("%d",&num);
  11. isPerfecto = checkPerfect(num);
  12. if(isPerfecto==1){
  13. printf("El número es perfecto");
  14. }else{
  15. printf("El numero no es perfecto");
  16. }
  17. return 0;
  18. }
  19.  
  20. int checkPerfect(int num){
  21. if(num > 0){
  22. int sumatorio = 0;
  23. for( int i = num-1;num >= 1;i--){ /* Sumatorio desde num-1 hasta 1*/
  24. if(num%i==0){ /* Si es divisor, sumamos al total*/
  25. sumatorio += i;
  26. }
  27. }
  28. }else{
  29. return 0;
  30. }
  31.  
  32. if(sumatorio==num){ /* Si el total del sumatorio es igual al número, el número es perfecto*/
  33. return 1;
  34. }else{
  35. return 0;
  36. }
  37. }

( El código puede contenter errores, está a bloc de notas y no tengo un compilador de C ahora mismo)