当前位置:首页 C++ > 正文

c++基类是使用极坐标的点类,从它派生一个圆类,圆类用点类坐标作为圆心,圆周通过极坐标原点,圆类有输出圆心直角坐标,圆半径和面积的成员函数。完成类的设计并验证。

作者:野牛程序员:2024-10-28 12:03:07 C++阅读 2398
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;
}

代码说明:

  1. PolarPoint

    • 包含极坐标的半径和角度(以弧度表示)。

    • 提供方法 toCartesian 将极坐标转换为直角坐标。

  2. Circle

    • PolarPoint 继承,并包含圆的半径。

    • 提供 displayCenter 方法输出圆心的直角坐标。

    • 提供 getRadius 方法返回圆的半径。

    • 提供 area 方法计算圆的面积。

    • 提供 displayProperties 方法输出圆的所有属性。

  3. main 函数

    • 提示用户输入极坐标的半径和角度,以及圆的半径,创建 Circle 对象并输出相关属性。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • c++
  • 最新推荐

    热门点击