一个圆可以由圆心坐标和半径确定,试在类Point的基础上,采用组合类方法定义并实现一个表示圆的类Circle

该文展示了如何在C++中通过组合类的方法定义一个Circle类,该类基于Point类来表示圆心,并包含半径属性,提供了计算圆面积和周长的方法。在某些情况下,需要包含#define_USE_MATH_DEFINES来正确使用M_PI常量。
摘要由CSDN通过智能技术生成

题目:

一个圆可以由圆心坐标和半径确定,试在类Point的基础上,采用组合类方法定义并实现一个表示圆的类Circle。

一种解法(仅供参考):

#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>

class Point {
public:
    double x, y;
    Point(double x = 0, double y = 0) : x(x), y(y) {}
};

class Circle {
public:
    Circle(Point center = Point(), double radius = 0) : center(center), radius(radius) {}

    double area() {
        return M_PI * radius * radius;
    }

    double perimeter() {
        return 2 * M_PI * radius;
    }

private:
    Point center;
    double radius;
};

int main() {
    // 创建一个圆
    Point p(1, 2);
    Circle c(p, 5);
    // 计算圆的面积和周长
    std::cout << "圆的面积为:" << c.area() << std::endl;
    std::cout << "圆的周长为:" << c.perimeter() << std::endl;
    return 0;
}

一些补充说明:

在上述代码中,我们采用了组合的方式,在Circle类中包含一个Point对象,表示圆心的坐标。Circle类有两个属性center和radius,分别表示圆心和半径。它还有两个方法area和perimeter分别计算圆的面积和周长。

运行结果如图所示:

 需要注意的是,上述代码中计算圆的面积和周长使用了C++标准库中的常量M_PI,它表示圆周率π的值。在使用时需要加入头文件cmath。

但是,有些版本的VS只加入头文件是不够的,会出现下图的结果:

 如果出现这样的问题之后,我们只需加上一行#define _USE_MATH_DEFINES即可运行。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值