¿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;
}
“`>
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:
Debería ser:
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.