2023.5.14编程一小时打卡

一、问题描述:

计算点到直线的距离。首先设计一个点类Point,它有2 个私有数据成员x和y,表示点的坐标。另一个类为直线类Line,它有3 个私有数据成员a,b和c,表示直线方程ax+by+c= 0。这两个类中都说明了一个友元函数dist,用于计算一个点到直线的距离。点(x.y)到直线ax+by+c=0的距离d的计算公式如下:

无标题.bmp

语法要点: 友元函数的特点。
这是一个编程题模板。请在这里写题目描述。例如:本题目要求读入2个整数A和B,然后输出它们的和。

输入格式:

输入两行,第一行输入两个整数,表示点坐标x,y的值
在第二行中输入直线三个参数,表示直线方程的三个洗漱a,b,c.

输出格式:

计算点到直线的距离保留两位小数。

二、解题思路:

首先,定义一个点类,在类中定义俩个成员数据x和y,再定义一个直线类,包含私有成员a,b,c,,在俩个类中分别定义构造函数去对成员初始化,再定义一个友元函数dist()去计算点到直线的距离,返回值为距离,最后在主函数中定义俩个类的对象并对其初始化,最后利用dist()函数计算并输出点到直线的距离。

三、代码实现:

复制代码
 1 #include<iostream>
 2 #include<cmath>
 3 #include<iomanip>
 4 using namespace std;
 5 class Line;
 6 class Point 
 7 {
 8     int x,y;
 9 public:
10     Point(int X=0,int Y=0) 
11     {
12         x=X;y=Y;
13     }
14     int getx(){ return x; }
15    int gety(){ return y; }
16     friend double dist(Point &,Line &); 
17 };
18 class Line 
19 {
20     int a,b,c;
21 public:
22         Line(int A=1,int B=1,int C=1) 
23     {
24         a=A,b=B;c=C;
25     }
26     int geta(){ return a; }
27    int getb(){ return b; }
28    int getc(){ return c; }
29     friend double dist(Point &,Line &); 
30 };
31 double dist(Point &P,Line &L)
32 {
33     double s;
34    s=abs((L.a*P.x+L.b*P.y+L.c)/sqrt(L.a*L.a+L.b*L.b));
35    return s;
36 }
37 int main()
38 {
39    int A,B,a1,b1,c1;
40     cin>>A>>B;
41     cin>>a1>>b1>>c1; 
42     Point P(A,B);
43     Line L(a1,b1,c1);
44     if (dist(P, L) == 0)
45         cout << "The distance is: 0";
46     else     
47         cout << fixed << setprecision(2)<< "The distance is: " << dist(P, L);
48     return 0;
49 }
复制代码
posted @   信2211-8李欣垚  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示