tan90�= 2020-03-31 09:35 采纳率: 100%
浏览 1324
已采纳

请问出现这个是什么意思

图片说明
作业题:自定义point类,其对象表示平面上的一个点(x,y),并通过类成员方式对该类重载二目运算符“+”和“^”,用来求出两个对象的和以及两个对象(平面点)的距离。各运算符的使用含义(运算结果)如下所示:
(1.2, -3.5) + (-1.5, 6) = (-0.3, 2.5);
(1.2, -3.5) ^ (-1.5, 6) = 9.87623。
编写主函数,说明类对象,而后通过类对象实现所定义的相关运算

#include
#include
using namespace std;
class ponit
{
private:
double x;
double y;
public:
ponit()
{
double x = y = 0;
}
ponit(double x_, double y_)
{
x = x_;
y = y_;
}
void display()
{
cout << "(" << x << "," << y << ")" << endl;
}
friend ponit operator +(ponit& p1, ponit& p2);
double operator ^( ponit& p2)
{
double distance = sqrt((this->x - p2.x) * (this->x - p2.x) -
(this->y - p2.y) * (this->y - p2.y));
return distance;
}
};
ponit operator +(ponit& p1, ponit &p2)
{
return ponit(p1.x + p2.x, p1.y + p2.y);
}

int main()
{
ponit p1(8, 8), p2(5, 4), p3;
p3 = p1 + p2;
p3.display();
double distance = p1.operator^(p2);
cout << distance << endl;
return 0;
}


展开全部

  • 写回答

2条回答 默认 最新

  • zx289544730 2020-03-31 11:05
    关注

    因为(this->x - p2.x) * (this->x - p2.x) - (this->y - p2.y) * (this->y - p2.y)是负数,开根号的时候出错了。
    改成sqrt(fabs((this->x - p2.x) * (this->x - p2.x) -
    (this->y - p2.y) * (this->y - p2.y)));

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部