Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/11/2011, 15:04
Avatar de nanotime
nanotime
 
Fecha de Ingreso: noviembre-2011
Ubicación: Cd. Guayana
Mensajes: 145
Antigüedad: 13 años
Puntos: 6
Pregunta Un ejercicio que me está frustrando.

Buenas, soy bastante nuevo en el foro y mucho también en la programación. Estoy empezando con C++ y lo domino digamos que cercano a lo que se diría a medias...

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:
#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;
}
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".

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.