非常满意意 2022-05-28 17:10 采纳率: 90.9%
浏览 158
已结题

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 18: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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月5日
  • 已采纳回答 5月28日
  • 赞助了问题酬金5元 5月28日
  • 创建了问题 5月28日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改