Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: deberesa123 en 16 Abril 2015, 03:50 AM

Título: numero perfecto
Publicado por: deberesa123 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 (cpp) [Seleccionar]


#include <iostream>

using namespace std;

int LeerEnteroPositivo_()
{
    int a=0;

    while(a<=0)          
       cin>>a;

    return a;
}

int EsPerfecto(int a)
{
    int suma=0;

    for (int i=1;i<a;i++)
        if(a%i==0)
                suma+=i;

  return suma;
}

bool Perf (int a)
{

     return (EsPerfecto(a)==a);
}

bool esDivisor (int b, int c)
{
int b = 0;
int c = 0;
return ((b/c)%=0)
}

int main()
{
 int numeroA;
 int a;
 int b;

 cout<<"Dame un numero entero positivo:"<<endl;
 numeroA = LeerEnteroPositivo_ ();


 cout << " Es perfecto el primer numero ? ( 0= Falso, 1=Verdadero)"<< Perf(numeroA)  << endl;
 cin>> a;
 cin>> b;
 cout << "Es divisor?" << esDivisor (int a, int b) << endl;

}




[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
Título: Re: numero perfecto
Publicado por: eferion 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
Título: Re: numero perfecto
Publicado por: Nasty35 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 (cpp) [Seleccionar]
bool esDivisor (int b, int c)
{
   int b = 0;
   int c = 0;
   return ((b/c)%=0)
}

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 (cpp) [Seleccionar]
  cin>> a;
  cin>> b;

Es equivalente a:
Código (cpp) [Seleccionar]
cin >> a >> b; // se simplifica en una línea

Tu código es muy lioso... debes repasar un poco más :)
Título: Re: numero perfecto
Publicado por: eferion en 21 Abril 2015, 17:22 PM
Aparte de lo comentado, dos cositas más:


Un saludo.