Problema de programación

Iniciado por Riverxz, 27 Agosto 2016, 04:58 AM

0 Miembros y 1 Visitante están viendo este tema.

Riverxz

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?

Código (cpp) [Seleccionar]
#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();
}

class_OpenGL

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:

Código (cpp) [Seleccionar]
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:

Código (cpp) [Seleccionar]
    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++;
    }

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL