Hoy estuve bastante frustrado porque no conseguía la manera de resolver la lógica de un problema que la profesora nos dejó, pero un amigo me dio un par de pautas y ya tengo el norte fijo.
El programa en sí es simple: "Un programa que lea un número ingresado por un usuario e imprima si es perfecto o no".
Un número perfecto es aquel cuya suma de sus divisores es igual a el mismo. Ejemplo: 6. 2 + 3 + 1= 6.
El código que tengo hasta ahora es este:
Código:
Y el problema que me presenta es que no importa que número ingrese, siempre, SIEMPRE me devuelve el mensaje "el número es perfecto".#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int x, aux, i;
cout <<"Ingrese un número";
cin >>x;
i = x;
aux = x;
while (i>0)
i--;
if (x%1 == 0)
{
aux = aux + i;
}
if (x == aux)
cout <<"El número es perfecto";
return 0;
}
He pensado también en hacerlo con un bucle for, que sería algo como for (i=0; i<=x; i--). Porque hasta donde entiendo debo decrecer la variable i (igualada al número ingresado por el usuario) para ir buscando cuales son los divisores... Aún no capto completamente la lógica, debo serles sincero, estoy trabajando casi por instinto y creo que ya es momento de lanzar mi duda a un sitio donde pueda discutir.
Gracias de antemano por cualquier ayuda.


Este tema le ha gustado a 1 personas