题目要求
创建一个表示点的类Point,运用组合的方式创建圆形类。
圆形有个成员函数isPointIn用于判断一个点是否在该圆形的内部。
完成对应类代码,使得主函数可以正确运行。
注意类的数值型数据成员类型为浮点型。
裁判测试程序样例:
/* 请在这里填写答案 */ int main(int argc, char const *argv[]) { double x,y; double r; cin>>x>>y>>r; Point p(x,y); Circle c(p,r); cin>>x>>y; Point p1(x,y); bool b = c.isPointIn(p1); cout<<b<<endl; }
输入样例:
在这里给出一组输入。例如:
1 1 1.5 2 2
输出样例:
在这里给出相应的输出。例如:
1
解题思路
class Point { public: // 构造函数,初始化 x, y 坐标 Point(double x1 = 0.0, double y1 = 0.0) { x = x1; y = y1; } // 获取 x, y 坐标 double getX() const { return x; } double getY() const { return y; } // 修改 x, y 坐标 void setX(double x1) { x = x1; } void setY(double y1) { y = y1; } private: // x, y 坐标 double x, y; };
Point 类中定义了两个私有成员变量 x 和 y,代表点的坐标。同时定义了一个构造函数,用于初始化 Point 类型对象的坐标,以及 get 和 set 函数用于获取或设置 Point 对象的坐标。这些函数都很简单,直接读取或修改成员变量即可。
class Circle { public: // 构造函数,初始化圆的圆心和半径 Circle(Point p1, double r1) { center = p1; radius = r1; } // 获取、设置圆的半径和圆心 double getRadius() const { return radius; } void setRadius(double r1) { radius = r1; } Point getCenter() const { return center; } void setCenter(Point p1) { center = p1; } // 判断一个点是否在圆内 bool isPointIn(Point p) { double dx = p.getX() - center.getX(); double dy = p.getY() - center.getY(); double dist = sqrt(dx * dx + dy * dy); if (dist <= radius) return true; else return false; } private: // 圆的圆心和半径 Point center; double radius; };
Circle 类中定义了两个成员变量,包括Point
类型的center
坐标和double
类型的radius
半径。
同样定义了构造函数Circle
,用于初始化圆的圆心和半径,以及get
和set
函数读取或修改Circle
对象的成员变量。
isPointIn 函数
用于判断给定的点是否在圆形内部。计算这个点到圆心的距离dist
,然后和半径radius
比较即可。
代码
#include <iostream> #include <cmath> using namespace std; class Point { public: Point(double x1 = 0.0, double y1 = 0.0) { x = x1; y = y1; } double getX() const { return x; } double getY() const { return y; } void setX(double x1) { x = x1; } void setY(double y1) { y = y1; } private: double x, y; }; class Circle { public: Circle(Point p1, double r1) { center = p1; radius = r1; } double getRadius() const { return radius; } void setRadius(double r1) { radius = r1; } Point getCenter() const { return center; } void setCenter(Point p1) { center = p1; } bool isPointIn(Point p) { double dx = p.getX() - center.getX(); double dy = p.getY() - center.getY(); double dist = sqrt(dx * dx + dy * dy); if (dist <= radius) return true; else return false; } private: Point center; double radius; };
总结
该题考察构造函数
、成员变量
及成员函数的定义和实现
,读者可躬身实践。
我是秋说,我们下次见。