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.