AYUDA con un progama en c++

ola me gustaria k me ayudarais con este codigo en c++ para hallar el siguiente numero perfecto mayor k 28, lo k me falla es k la funcion bool perfecto me dice el compilador k no puedo usarla como funcion y yo quiero k sea una funcion de tipo logico para k cuando sea el numero k toque perfecto se salga del bucle y lo escriba.
#include <iostream>
#include <cstdlib>

using namespace std;

int main ()
{
int n = 28;
bool bien;
bool perfecto (n);

do
{
n = n + 1;
bien = perfecto (n);

} while (bien != true);

cout << "El siguiente perfecto mayor que 28 es: " << endl;
cout << n << endl;

system("PAUSE");
return 0;
}


bool perfecto (int n)
{
int suma;
int i , d;
bool perfec;

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


gracias de antemano
Para otra vez, el código se pone dentro de la etiqueta code.

El problema lo tienes en la declaración, te falta declarar el tipo de dato de n (bool perfecto (int n);). Suelen declararse antes del main, pero creo que esto da igual.

Aparte, en la función perfecto no tienes inicializado el valor de d, por lo que no va a devolver true nunca, por lo que el do while entrará en un bucle infinito.
gracias amuchamu pero ahora llos dos cambios k me dices y al compilar no me da error pero al ejecutar no hace nada, solo sale la ventanita y ya esta. ¿ alguien sabe k es lo k falla? :(
no he probado el codigo, pero por lógica, si no te aparece nada es porque se queda pillado en el bucle do...while, y si eso pasa es porque no encuentra ningun numero perfecto, así que algo hay mal alli. Como el bucle lo unico que hace es incrementar n y llamar a la funcion, el fallo debe estar en la funcion, que no calcula bien el numero perfecto, y creo que es porque al declarar suma no la inicializas a 0, por lo que el valor es indeterminado, así que nunca salvo puñetera casualidad te va a dar un numero perfecto.

Prueba y me dices.
"d" tampoco esta inicializada ...
4 respuestas