Buenas colegas :D tengo el siguiente problema. Piden ingresar un número e indicar si este se puede expresar como la suma de dos enteros al cuadrado. Bueno aqui está lo que he avanzado pero me bota errores ¿alguna ayuda?
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{int n=-1,a=1,b=1,cont=0;
while(n<0)
{
cout<<"Ingrese un numero: ";cin>>n;
getche();
}
while(a<n)
{
while(b<n)
{
if(pow(a,2)+pow(b,2) == pow(n,2))
{
cont++;
cout<<a<<"^2"<<" + "<<b<<"^2"<<" = "<<n;
}
b++;
}
a++;
}
if (cont==0)
{
cout<<"No hay dos cuadrados enteros que sumen "<<n;
}
else
{
cout<<"En total hay "<<cont<<" cuadrados enteros que sumen "<<n;
}
getche();
}
En primer lugar, no hace falta (y tampoco tendrías que usar) conio.h. En segundo lugar, la función para obtener un carácter no es getche, sino getchar. En tercer lugar, hay un error de lógica en el programa en la siguiente línea:
if(pow(a,2)+pow(b,2) == pow(n,2))
Según el enunciado, la siguiente ecuación se tendría que verificar:
a^2 + b^2 = n
Pero tu estás escribiendo la ecuación
a^2 + b^2 = n^2
En tercer lugar, no reinicias el valor de 'b' en cada iteración:
while(a<n)
{
while(b<n)
{
b = a; // Reinicia 'b'
if(pow(a,2)+pow(b,2) == pow(n,2))
{
cont++;
cout<<a<<"^2"<<" + "<<b<<"^2"<<" = "<<n;
}
b++;
}
a++;
}