• 计算点到直线的距离一一友元函数的应用


    计算点到直线的距离一一友元函数的应用 (15 分)

    计算点到直线的距离。首先设计一个点类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.

    输出格式:

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

    输入样例:

    在这里给出一组输入。例如:

    5 5
    2 4 3
    

    输出样例:

    在这里给出相应的输出。例如:

    The distance is: 7.38
    

    代码

    #include<bits/stdc++.h>
    using namespace std;
    class Point{
    	private:
    		int x;
    		int y;
    	public:
    		Point(int ox,int oy):x(ox),y(oy){
    		}
    		int get_x()
    		{
    			return this->x;
    		}
    		int get_y()
    		{
    			return this->y;
    		}
    };
    
    class Line{
    	private:
    		double a;
    		double b;
    		double c;
    	public:
    		Line(double oa,double ob,double oc):a(oa),b(ob),c(oc){
    		}
    		double get_a()
    		{
    			return this->a;
    		}
    		double get_b()
    		{
    			return this->b;
    		}
    		double get_c()
    		{
    			return this->c;
    		}
    		friend double dist(Point point,Line line);
    };
    double dist(Point p,Line l)
    {
    	double part1=l.get_a()*p.get_x()+l.get_b()*p.get_y()+l.get_c();
    	double part2=sqrt(l.get_a()*l.get_a()+l.get_b()*l.get_b());
    	double ans=abs(part1/part2);
    	return ans;
    }
    int main()
    {
    	int x,y;
    	cin>>x>>y;
    	Point p(x,y);
    	
    	int a,b,c;
    	cin>>a>>b>>c;
    	Line l(a,b,c);
    	
    	double ans=dist(p,l);
    	printf("The distance is: ");
    	if(ans!=0)
           cout << fixed << setprecision(2)<<ans;
        else cout<<0;
    	
    	return 0;
    }
    

    反思

    • 0.00要输成0;

    精进

    • cout << fixed << setprecision(2)<<ans;
  • 相关阅读:
    利用JQuery一步步打造无缝滚动新闻
    asp.net操作oracle存储过程的小问题
    C# Tostring() 格式大全 [转]
    Oracle存储过程总结【转】
    JQuery中text()、html()和val()的区别
    JQuery的JSON数据格式
    HDU 1065 I Think I Need a Houseboat
    POJ1251 Jungle Roads
    HDU3177 Crixalis's Equipment
    HDU1042 N!
  • 原文地址:https://www.cnblogs.com/BeautifulWater/p/14824551.html
Copyright © 2020-2023  润新知