Hola, soy nuevo programando asique no os riais mucho de mí.
El caso esque tengo que entregar unas practicas para la universidad, con el enunciado siguiente:
1) Realiza el diseño de un programa que permita determinar todos los
números perfectos entre dos números enteros n1 y n2. Se debe
cumplir que n1<n2 y, además, que tanto n1 como n2 sean mayores
que 0. Definimos los números perfectos del siguiente modo:
· 1 es perfecto
· if N>1, N es perfecto si la suma de sus divisores (incluido el 1 y
excluido el propio número) da como resultado el mismo
número.
ACLARACIONES:
- El programa debe calcular y mostrar la cantidad de números
perfectos dentro del intervalo además de visualizar cuáles son.
- En el caso de que n1>n2 se intercambiarán los valores.
- En el caso de que n1 o n2 sean negativos o cero se repetirá la
entrada de datos hasta que sean valores correctos.
- La solución debe construirse empleando módulos.
He escrito mi código, que para mí aparantemente debería funcionar, compila pero al ejecutarlo solo me pide los dos números y cierra el programa. Si me pudierais decir donde se encuentra el fallo, o si el código esta mal escrito os lo agradecería. Un saludo y gracias de antemano.
El código es el siguiente:
#include
#include
using namespace std;
void cambio_numeros(int &numero1, int &numero2){
int d;
d=numero1;
numero1=numero2;
numero2=d;
}
bool es_perfecto(int a){
int divisor, total;
divisor=2;
total=1;
do{
if (a/divisor==0)
total = total+divisor;
divisor++;
}while (divisor<a);
if (total==a)
return true;
else
return false;
}
int main(){
int num1, num2;
do{
cout << "Introduce el primer numero " << endl;
cin >> num1;
cout << "Introduce el segundo numero " << endl;
cin >> num2;
} while(num1num2)
cambio_numeros(num1, num2);
num1=num1+1;
do{
if (es_perfecto(num1)
cout << num1 << endl;
num1++;
}while(num1<num2);
return 0;
}