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

请问出现这个是什么意思

图片说明
作业题:自定义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 19: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条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名