判断点圆关系

输入平面上的一个点的坐标,以及一个圆的圆心坐标和半径,输出该点到原点的距离,并判断该点在圆内,圆外还是在圆周上。
在圆外时,将输出“outside",在圆内时,输出"inside",在圆周上时,输出“on"。
下面已经给出了点类Point的部分定义,请将其函数定义补充完整,并添加对圆类Circle的完整定义。

裁判测试程序如下:
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
class Point{
    private:
        double x,y;
    public:
        Point();
        Point(double x_,double y_);
        double distance();
        double distance(const Point &p);
        double getX(){return x;}
        double getY(){return y;}
        void setX(double x_);
        void setY(double y_);
};
/* 你的代码将被嵌入这里 */
int main(){
   double x1,y1,x2,y2,r; 
   cin>>x1>>y1>>x2>>y2>>r;
   Point p(x1,y1);
   Point ctr(x2,y2);
   Circle c(ctr,r);
   cout<<setprecision(3)<<p.distance()<<" "<<c.judge(p)<<endl;
} 

输入格式说明:
格式如下:


点的x坐标 点的y坐标 圆心的x坐标 圆心的y坐标 圆的半径

输入样例:
在一行中给出点坐标和圆心坐标及半径:

2 3 1 1 3
输出样例:
在这里给出相应的输出。例如:

3.61 inside

 

Point::Point() : x(0.0), y(0.0) {}
Point::Point(double x_, double y_) : x(x_), y(y_) {}
double Point:: distance() {
        return sqrt(x * x + y * y);
    }  // 计算点到原点的距离
double Point:: distance(const Point &p) {
        return sqrt((x - p.x) * x + (y - p.y) * (y - p.y));
    }  // 计算当前点到另一个点p的距离

class Circle {
private:
    Point center;
    double radius;
public:
    Circle(const Point &ctr, double r) : center(ctr), radius(r) {}
    string judge(const Point &p) {  // 设置一个函数,判断一个点p相对于圆的位置
        double d = center.distance(p);  // 计算点到圆心的距离
        if (d < radius) return "inside";
        else if (d > radius) return "outside";
        else return "on";
    }
};

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值