一、问题描述:
计算点到直线的距离。首先设计一个点类Point,它有2 个私有数据成员x和y,表示点的坐标。另一个类为直线类Line,它有3 个私有数据成员a,b和c,表示直线方程ax+by+c= 0。这两个类中都说明了一个友元函数dist,用于计算一个点到直线的距离。点(x.y)到直线ax+by+c=0的距离d的计算公式如下:
语法要点: 友元函数的特点。
这是一个编程题模板。请在这里写题目描述。例如:本题目要求读入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 }标签:直线,dist,14,Point,int,2023.5,return,打卡,Line From: https://www.cnblogs.com/lixinyao20223933/p/17400031.html