Muchas gracias por la respuesta YreX-DrW!
Pero llevo ya un tiempo dándole vueltas, y aunque entiendo lo que me dices, no consigo hacerlo. No me sale una función para determinar si un numero es abundante defectivo o perfecto con solo una variable como me dices, he conseguido reducirla a 2, una para el número introducido y otra para la suma de divisores, y me ha quedado tal que así:
No sé si lo de devolver 1 cuando sea abundante, 0 cuando sea perfecto o -1 cuando sea defectivo se hace como lo he hecho yo. Da rabia esto de tenerlo casi pero no encontrarlo, pero a la vez es un reto muy interesante, aunque alfinal tenga que volver a preguntar casi siempre!
Y muchas gracias también por la aclaración de la biblioteca <conio.h> y las variables globales.
Pero llevo ya un tiempo dándole vueltas, y aunque entiendo lo que me dices, no consigo hacerlo. No me sale una función para determinar si un numero es abundante defectivo o perfecto con solo una variable como me dices, he conseguido reducirla a 2, una para el número introducido y otra para la suma de divisores, y me ha quedado tal que así:
Código [Seleccionar]
#include <iostream>
using namespace std;
int Perfecto (int, int);
int main (void) {
int valor1, valor2, abund;
cout << "Este programa determina la suma de los numeros abundantes comprendidos entre dos enteros determinados" << endl;
cout << "Escribe un numero: ";
cin >> valor1;
cout << "Escribe otro numero: ";
cin >> valor2;
//Debemos averiguar los numeros abundantes que hay entre esos dos valores tecleados:
for (int x = valor1 +1; x < valor2; x++) {
if (Perfecto(x,0) == 1){
abund++;
}
}
cout << "La suma de los numeros abundantes entre " << valor1 << " y " << valor2 << " es " << abund;
cin.get();
return 0;
}
int Perfecto(int, int) {
int num, sum_div = 0;
while (num != 0){
for (int i = 1; i < num; i++) {
if (num%i == 0) {
sum_div = sum_div + i;
}
}
if (sum_div > num){
cout << "El número introducido es abundante";
return 1;
sum_div = 0;
}
else if (sum_div == num) {
cout << "El número introducido es perfecto";
return 0;
sum_div = 0;
}
else {
cout << "El número introducido es defectivo";
return -1;
sum_div = 0;
}
}
}
No sé si lo de devolver 1 cuando sea abundante, 0 cuando sea perfecto o -1 cuando sea defectivo se hace como lo he hecho yo. Da rabia esto de tenerlo casi pero no encontrarlo, pero a la vez es un reto muy interesante, aunque alfinal tenga que volver a preguntar casi siempre!
Y muchas gracias también por la aclaración de la biblioteca <conio.h> y las variables globales.