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; }