Hola, estoy haciendo un programa que me diga si dos números son perfectos y si son amigos entre sí.
La cuestión es que me compila, pero al ejecutarlo me pide que introduzca los dos números dos veces seguidas.
Aquí dejo el código:
#include <iostream>
using namespace std;
int LeerEnteroPositivoa (){
int a;
do{
cout<<"Dame un numero entero positivo:"<<endl;
cin>>a;
}
while(a<1);
return a;
}
int LeerEnteroPositivob (){
int b;
do{
cout<<" Dame otro numero entero positivo:"<<endl;
cin>>b;
}
while(b<1);
return b;
}
bool Perfa () {
bool perfectoa;
int a=LeerEnteroPositivoa();
int suma=0;
for (int i=1;i<a;i++){
if(a%i==0)
{
suma+=i;
}
}
if(suma==a)
perfectoa=true;
else
perfectoa=false;
return perfectoa;
}
bool Perfb () {
bool perfectob;
int b=LeerEnteroPositivob();
int suma=0;
for (int i=1;i<b;i++){
if(b%i==0)
{
suma+=i;
}
}
if(suma==b)
perfectob=true;
else
perfectob=false;
return perfectob;
}
bool amigos()
int a=LeerEnteroPositivoa();
int b=LeerEnteroPositivob();
int i=1;
int j=1;
int suma_div_b=0;
int suma_div_a=0;
bool sonamigos;
for(i=1;i<=(a/2);i++){
if((a%i)==0){
suma_div_a=suma_div_a+i;
}
}
for(j=1;j<=(b/2);j++){
if((b%j)==0){
suma_div_b=suma_div_b+j;
}
}
if((suma_div_a==b)&&(suma_div_b==a)&&(a!=b)){
sonamigos=true;
}
else
sonamigos=false;
return sonamigos;
}
int main(){
int PerfectoA=Perfa();
int PerfectoB=Perfb();
int Amigos= amigos();
cout << " Es perfecto el primer numero ? ( 0= Falso, 1=Verdadero)"<< PerfectoA << endl;
cout << " ¿ Es perfecto el segundo numero ?( 0= Falso, 1=Verdadero) " << PerfectoB<< endl;
cout << " ¿ son amigos ?( 0= Falso, 1=Verdadero) "<< Amigos << endl;
}
Creo que el problema está en el booleano Amigos
Aquí os dejo adjunto lo que me sale al ejecutar.
Seguro que es una tontería,pero no caigo.
Gracias
