Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: jairogon en 16 Julio 2010, 17:50 pm



Título: Por que no me funciona y como lo corrijo??
Publicado por: jairogon en 16 Julio 2010, 17:50 pm
El siguiente programa compila bien pero al ejecutarlo sale lo siguiente:

sqrt: Domain error
floating point errot: Domain
Abnormal program termination


Como lo corrijo

Gracias


Código:
//Programa que calcula las ternas pitagoricas
// del 1 al 500

#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>

int main()
{
  double p=0.0;

  system("cls");

for(int i=1;i<=500;i++)
{
    for(int j=1;j<=500;j++)
     {
p=(i*i)+(j*j);

for(int k=1;k<=sqrt(p);++k)
                 {
if((p/(k*k)==1.0))
                        {
cout<<"Los numeros "<<i<<" "<<j<<" "<<k<<"  son una terna pitagorica";
                         getche();
                        }
                 }
            }

}
return 0;
}


Título: Re: Por que no me funciona y como lo corrijo??
Publicado por: MIG80 en 16 Julio 2010, 18:12 pm
Podrias probar usando solo enteros..

PD: con el compilador que uso compila y ejecuta bien.. ¿que compilador usas?

Saludos


Título: Re: Por que no me funciona y como lo corrijo??
Publicado por: Horricreu en 16 Julio 2010, 18:37 pm
Por varias cosas que las voy a decir suponiendo que tienes un compilador moderno:

  • La librería iostream se incluye sin el .h final.
  • Porque estás utilizando la librería conio.h (esta depende de si tienes DevCpp).

Saludos :P


Título: Re: Por que no me funciona y como lo corrijo??
Publicado por: .:BlackCoder:. en 16 Julio 2010, 18:37 pm
Estas ligando C con C++... fijate en las librerias... Por cierto no deberia de compilarte czealt...


Título: Re: Por que no me funciona y como lo corrijo??
Publicado por: MIG80 en 16 Julio 2010, 18:43 pm
Bueno si, para que compile tuve que quitar el .h del iostream.h  ;D
y agregar el using namespace std;


Título: Re: Por que no me funciona y como lo corrijo??
Publicado por: nicolas_cof en 16 Julio 2010, 20:09 pm
jairogon, asi te tendrian que quedar las primeras lineas del codigo...

Código:
#include <iostream>
#include <cstdlib>
#include <cmath>

using namespace std;

int main( void )
{
    ...
    return 0;
}

No es recomendable utilizar la libreria conio.h ya que es obsoleta y no es estandar... Utiliza getchar() en vez de getch()

Otra cosa, si quieres que tu codigo sea lo mas portable posible evita usar llamadas al sistema como system("cls") ya que solo funcionara en Windows :P

Salu10.