elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  numero perfecto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: numero perfecto  (Leído 2,624 veces)
deberesa123

Desconectado Desconectado

Mensajes: 1


Ver Perfil
numero perfecto
« en: 16 Abril 2015, 03:50 am »

Un número se considera perfecto si la suma de sus divisores es igual al número. Por ejemplo, los divisores de 6 son 1, 2, 3. Dado que, 1+2+3 = 6, 6 es un número perfecto.

Escribir un programa que pida al usuario un número positivo, y decida si es perfecto o no. El programa debe crear 2 funciones:

1. esPerfecto(int) que devuelve verdadero o falso si el número es perfecto

2. esDivisor(int a , int b) que devuelve verdero o falso segun si a es divisor de b, es decir, esDivisor(2, 6) devuelve verdadero, pero esDivisor(2, 5) devuelve falso.

Código
  1.  
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. int LeerEnteroPositivo_()
  7. {
  8.     int a=0;
  9.  
  10.     while(a<=0)          
  11.        cin>>a;
  12.  
  13.     return a;
  14. }
  15.  
  16. int EsPerfecto(int a)
  17. {
  18.     int suma=0;
  19.  
  20.     for (int i=1;i<a;i++)
  21.         if(a%i==0)
  22.                 suma+=i;
  23.  
  24.   return suma;
  25. }
  26.  
  27. bool Perf (int a)
  28. {
  29.  
  30.      return (EsPerfecto(a)==a);
  31. }
  32.  
  33. bool esDivisor (int b, int c)
  34. {
  35. int b = 0;
  36. int c = 0;
  37. return ((b/c)%=0)
  38. }
  39.  
  40. int main()
  41. {
  42.  int numeroA;
  43.  int a;
  44.  int b;
  45.  
  46.  cout<<"Dame un numero entero positivo:"<<endl;
  47.  numeroA = LeerEnteroPositivo_ ();
  48.  
  49.  
  50.  cout << " Es perfecto el primer numero ? ( 0= Falso, 1=Verdadero)"<< Perf(numeroA)  << endl;
  51.  cin>> a;
  52.  cin>> b;
  53.  cout << "Es divisor?" << esDivisor (int a, int b) << endl;
  54.  
  55. }
  56.  
  57.  


[MOD] Usar las etiquetas GesHi, para publicar código.

esto es lo que tengo
me pueden ayudar a ver el error en la funcion esDivisor
y como hacer para que al rato de imprimir aparezca verdadero y falso en vez de 0 y 1


« Última modificación: 21 Abril 2015, 17:28 pm por simorg » En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: numero perfecto
« Respuesta #1 en: 16 Abril 2015, 08:55 am »

Pues mira que bien, ya tienes trabajo para casa, y además parece interesante.

¿pensabas que te íbamos a dar la solución así por las buenas?

A ver, una cosa es ayudar y otra hacer un trabajo a medida... ahora, si quieres presupuesto para hacerte la tarea seguro que más de uno te pasa un precio.

Un saludo


En línea

Nasty35

Desconectado Desconectado

Mensajes: 77


Ver Perfil
Re: numero perfecto
« Respuesta #2 en: 21 Abril 2015, 16:31 pm »

Primero, tienes que seguir el enunciado, si te pide que crees la función esDivisor pues úsala, y creala bien:
Código
  1. bool esDivisor (int b, int c)
  2. {
  3.   int b = 0;
  4.   int c = 0;
  5.   return ((b/c)%=0)
  6. }
wtf? si cambias sus valores a 0, y encima lo divides dará error por división por cero.
Lo mismo con lo demás, te recomiendo que borres todo y lo crees de nuevo, con 3 funciones (las que te pide y main, y ya)

Y por cierto:
Código
  1.  cin>> a;
  2.  cin>> b;
Es equivalente a:
Código
  1. cin >> a >> b; // se simplifica en una línea

Tu código es muy lioso... debes repasar un poco más :)
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: numero perfecto
« Respuesta #3 en: 21 Abril 2015, 17:22 pm »

Aparte de lo comentado, dos cositas más:

  • El código lo tienes que decorar eligiendo el lenguaje correspondiente en el desplegable que dice "GeSHi". Te crea dos etiquetas, una de apertura y otra de cierre... el código lo pegas dentro.
  • Editar un mensaje tiene sentido cuando nadie te ha respondido aún... si ya tienes respuesta, casi mejor añadir una respuesta al hilo para que éste tenga cierta coherencia.

Un saludo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[RETO] Comprobar si un numero dado es un numero de la suerte « 1 2 ... 5 6 »
Programación Visual Basic
Karcrack 53 23,796 Último mensaje 17 Agosto 2010, 23:58 pm
por Dessa
Convertidor de número literal a número real
Programación C/C++
david_BS 0 2,626 Último mensaje 6 Mayo 2012, 21:34 pm
por david_BS
programa que determine si numero es perfecto
Programación C/C++
jon_18 5 19,250 Último mensaje 15 Agosto 2012, 17:28 pm
por Oblivi0n
[RETO] Determinar Número Perfecto « 1 2 3 »
Programación Visual Basic
Miseryk 20 9,246 Último mensaje 8 Noviembre 2013, 02:24 am
por rob1104
saber primer numero y ultimo numero [solucionado]
Bases de Datos
basickdagger 4 4,691 Último mensaje 3 Septiembre 2014, 17:19 pm
por basickdagger
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines