c++基类是使用极坐标的点类,从它派生一个圆类,圆类用点类坐标作为圆心,圆周通过极坐标原点,圆类有输出圆心直角坐标,圆半径和面积的成员函数。完成类的设计并验证。
作者:野牛程序员:2024-10-28 12:03:07 C++阅读 2456
c++基类是使用极坐标的点类,从它派生一个圆类,圆类用点类坐标作为圆心,圆周通过极坐标原点,圆类有输出圆心直角坐标,圆半径和面积的成员函数。完成类的设计并验证。
可以设计一个使用极坐标的点类 PolarPoint,并从其派生一个圆类 Circle。圆类将使用点类的坐标作为圆心,圆周通过极坐标原点。以下是完整的代码实现:
#include <iostream>
#include <cmath>
class PolarPoint {
private:
double radius; // 极坐标中的半径
double angle; // 极坐标中的角度(弧度)
public:
// 构造函数
PolarPoint(double r, double a) : radius(r), angle(a) {}
// 输出直角坐标
void toCartesian(double &x, double &y) const {
x = radius * cos(angle); // x = r * cos(θ)
y = radius * sin(angle); // y = r * sin(θ)
}
};
class Circle : public PolarPoint {
private:
double radius; // 圆的半径
public:
Circle(double r, double a, double radius) : PolarPoint(r, a), radius(radius) {}
// 输出圆心的直角坐标
void displayCenter() const {
double x, y;
toCartesian(x, y); // 使用基类方法计算直角坐标
std::cout << "圆心的直角坐标: (" << x << ", " << y << ")" << std::endl;
}
// 返回圆的半径
double getRadius() const {
return radius;
}
// 计算圆的面积
double area() const {
return M_PI * radius * radius; // 面积 = π * r²
}
// 输出圆的属性
void displayProperties() const {
displayCenter();
std::cout << "圆的半径: " << getRadius() << std::endl;
std::cout << "圆的面积: " << area() << std::endl;
}
};
int main() {
double r, a, circleRadius;
std::cout << "请输入极坐标的半径和角度(弧度): ";
std::cin >> r >> a;
std::cout << "请输入圆的半径: ";
std::cin >> circleRadius;
Circle circle(r, a, circleRadius);
circle.displayProperties(); // 输出圆的属性
return 0;
}代码说明:
PolarPoint类:包含极坐标的半径和角度(以弧度表示)。
提供方法
toCartesian将极坐标转换为直角坐标。Circle类:从
PolarPoint继承,并包含圆的半径。提供
displayCenter方法输出圆心的直角坐标。提供
getRadius方法返回圆的半径。提供
area方法计算圆的面积。提供
displayProperties方法输出圆的所有属性。main函数:提示用户输入极坐标的半径和角度,以及圆的半径,创建
Circle对象并输出相关属性。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

