关闭
y大z力y 2022-05-28 09:10 采纳率: 83.3%
浏览 168
已结题

C++首先设计一个点类Point再进行如下操作

它有2个私有成员x和y,表示点的坐标。另一个类为直线类Line,它有3个私有数据成员a,b和c,表示直线方程ax+by+c=0。这两个类中都说明了同一个友元函数dist,用于计算一个点到直线的距离。试在主函数中测试。
(这里需使用两个数学函数sqrt,fabs)

#include <iostream>
using namespace std;
…
class Point
{
…
};
 class Line
{
…
};
…
int main()
{  Point  O(0,0); //点;
   Line  L(1,1,-1); //直线;
   double  d;    //距离
   d=dist(O,L);
   cout<<"点O到直线L的距离为:d="<<d<<endl;
   return 0;
}
  • 写回答

1条回答 默认 最新

  • 程序喵正在路上 后端领域新星创作者 2022-05-28 10:12
    关注

    你可以参考一下,希望采纳

    #include <iostream>
    #include <math.h>
    using namespace std;
    
    class Point;            //对类的引用性说明 
    class Line;
    
    class Point
    {
        double x, y;
    public:
        Point(double x1, double y1)           //定义构造函数 
        {
            x = x1, y = y1;
        }
        friend double dist(Point&, Line&);           //定义友元函数 
    };
    
    class Line
    {
        double a, b, c;
    public:
        Line(double a1, double b1, double c1)        //定义构造函数
        {
            a = a1, b = b1, c = c1;
        }
        friend double dist(Point&, Line&);          //定义友元函数
    };
    
        
    //计算一个点到直线的距离
    double dist(Point& P, Line& L)
    {
        double dis;
        dis = fabs((L.a * P.x + L.b * P.y + L.c) / sqrt(L.a * L.a + L.b * L.b));
        return dis;
    }
    
    int main()
    {
        Point  O(0, 0); //点;
        Line  L(1, 1, -1); //直线;
        double  d;    //距离
        d = dist(O, L);
        cout << "点O到直线L的距离为:d=" << d << endl;
        return 0;
    }
    

    运行结果:

    img

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    y大z力y 2022-05-28 10:26

    谢谢你

    回复
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 6月4日
  • 已采纳回答 5月28日
  • 赞助了问题酬金5元 5月28日
  • 创建了问题 5月28日
手机看
程序员都在用的中文IT技术交流社区

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

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

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

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

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

客服 返回
顶部