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; }
代码说明:
PolarPoint
类:包含极坐标的半径和角度(以弧度表示)。
提供方法
toCartesian
将极坐标转换为直角坐标。Circle
类:从
PolarPoint
继承,并包含圆的半径。提供
displayCenter
方法输出圆心的直角坐标。提供
getRadius
方法返回圆的半径。提供
area
方法计算圆的面积。提供
displayProperties
方法输出圆的所有属性。main
函数:提示用户输入极坐标的半径和角度,以及圆的半径,创建
Circle
对象并输出相关属性。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
