es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué este programa está dando NaN como distancia entre los puntos?

¿Por qué este programa muestra “nan” como distancia entre los puntos?
Lo he hecho utilizando funciones amigas y conceptos de programación orientada a objetos, pero cada vez que intento encontrar la distancia entre las coordenadas, muestra cero o “nan”.

“`cpp
#include<iostream>
#include<cmath>
using namespace std;
class point{
int x,y;
friend void disCoord(point,point);
public:
point(int a,int b){
x=a;
y=b;
}
void displaypoint(){
cout<<"el punto es ("<<><><endl; }="" };//fin="" de="" la="" clase="" void="" discoord(point="" o1,point="" o2){="" double="" dis="sqrt(pow(o2.x-o1.x,2)-pow(o2.y-o1.y,2));" cout<<"la="" distancia="" entre="" el="" punto=""></endl;><><o1.y<<") y="" el="" punto=""></o1.y<<")><><o2.y<<") es=""></o2.y<<")><><endl;
}

int main(){
point a=point(1,2);
point b=point(1,3);
a.displaypoint();
b.displaypoint();
discoord(a,b);

return 0;
}
“` }=”” int=”” main(){=”” point=”” a=”point(1,2);” point=”” b=”point(1,3);” a.displaypoint();=”” b.displaypoint();=”” discoord(a,b);=”” return=”” 0;=”” }=””></endl;
}

int main(){
point a=point(1,2);
point b=point(1,3);
a.displaypoint();
b.displaypoint();
discoord(a,b);

return 0;
}
“`>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hay un error en la fórmula utilizada en la función disCoord para calcular la distancia entre los dos puntos.

    En lugar de:

    double dis=sqrt(pow(o2.x-o1.x,2)-pow(o2.y-o1.y,2));
    

    Debería ser:

    double dis=sqrt(pow(o2.x-o1.x,2) + pow(o2.y-o1.y,2));
    

    El error se debe al uso incorrecto del operador de resta en lugar del operador de suma al calcular el cuadrado de la diferencia entre las coordenadas y de los dos puntos. Como resultado, la función devuelve un valor incorrecto, que es cero o nan (no es un número).

    Al corregir la fórmula, el programa debería poder calcular y mostrar correctamente la distancia entre los dos puntos.

Comments are closed.