设计一个Point类,有两个私有的数据成员x和y,存储横坐标和纵坐标,并为该类定义各种构造函数。 再设计一个Circle类,该类有私有成员Point center; 代表圆心,以及私有数据成员double radius; 代表半径。 为该类设计求面积和半径的成员函数。圆周率数据使用3.14159265。 再为该类设计一个判断某点是否在圆内部的成员函数(如果点在圆周上则不算在圆内部)。 请根据下面的main函数完成类的设计: int main(){ double x,y,radius; cin>>x>>y; cin>>radius; Circle c(x,y,radius); cin>>x>>y; Point p(x,y); cout<<c.getArea()<<endl; cout<<c.getPerimeter()<<endl; if(c.isInTheCircle(p)) cout<<"该点在圆内部!"<<endl; else cout<<"该点不在圆内部!"<<endl; return 0; }
时间: 2024-03-21 09:44:24 浏览: 116
常数据成员-C++面向对象程序设计教程 第2章 类和对象
以下是Point类和Circle类的实现:
```c++
#include <iostream>
#include <cmath> // 用到了 pow 和 sqrt 函数
using namespace std;
class Point {
private:
double x;
double y;
public:
Point(): x(0), y(0) {} // 默认构造函数,将 x 和 y 初始化为 0
Point(double x, double y): x(x), y(y) {} // 有参数的构造函数
Point(const Point& p): x(p.x), y(p.y) {} // 拷贝构造函数
double getX() const { return x; }
double getY() const { return y; }
};
class Circle {
private:
Point center;
double radius;
public:
Circle(): center(), radius(0) {} // 默认构造函数,将圆心初始化为 (0, 0),半径初始化为 0
Circle(double x, double y, double radius): center(x, y), radius(radius) {} // 有参数的构造函数
Circle(const Point& p, double radius): center(p), radius(radius) {} // 有参数的构造函数
Circle(const Circle& c): center(c.center), radius(c.radius) {} // 拷贝构造函数
double getArea() const { return 3.14159265 * pow(radius, 2); } // 求圆的面积
double getPerimeter() const { return 2 * 3.14159265 * radius; } // 求圆的周长
bool isInTheCircle(const Point& p) const { // 判断点是否在圆内部
double distance = sqrt(pow(p.getX() - center.getX(), 2) + pow(p.getY() - center.getY(), 2));
return distance < radius;
}
};
int main() {
double x, y, radius;
cin >> x >> y;
cin >> radius;
Circle c(x, y, radius);
cin >> x >> y;
Point p(x, y);
cout << c.getArea() << endl;
cout << c.getPerimeter() << endl;
if (c.isInTheCircle(p))
cout << "该点在圆内部!" << endl;
else
cout << "该点不在圆内部!" << endl;
return 0;
}
```
输入样例:
```
1 2
3
4 5
```
输出样例:
```
28.2743
18.8496
该点不在圆内部!
```
阅读全文