【计算由圆和正方形构成的阴影部分的面积】

文章描述了一个编程问题,涉及创建一个圆形类和正方形类,分别包含计算面积和周长的方法。然后定义一个组合类,用于表示一个正方形内切一个圆形的情况,可以计算阴影部分(即圆超出正方形的部分)的面积和周长。示例代码展示了如何实例化这些类并进行计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【问题描述】定义一个圆形类,属性有半径和相应的成员函数。然后定义一个正方形类,属性有边长和相应的成员函数。再编写一个如下图所示的组合类,由一个正方型和一个圆形组成,要求该组合类能求出阴影部分面积和周长。

在这里插入图片描述

【输入形式】无
【输出形式】

自定义图形的面积49.2656

自定义图形的周长29.1328

自定义图形的面积109.098

自定义图形的周长45.6992

【样例输入】
【样例输出】
【样例说明】
【评分标准】

完整代码如下:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<istream>
#include<iomanip>
#include<ostream>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<fstream>
#include<stack>
#include<ctime>
#include<deque>
#include<queue>
#include <sstream>
#include <numeric>
#pragma warning (disable:4996)

using namespace std;


const double PI = 3.1416;

class Box {
    double side_length;

public:
    Box(double side_length = 1) : side_length(side_length) {}
    double get_side_length() const { return side_length; }
    void set(double side_length) { this->side_length = side_length; }
};

class circle {
    double radius;

public:
    circle(double radius = 1) : radius(radius) {}
    double get_radius() const { return radius; }
    void set(double radius) { this->radius = radius; }
};

class NewStyle {
    circle c;
    Box b;

public:
    NewStyle(const circle& c, const Box& b) : c(c), b(b) {}

    double S() {
        double shadow_area = c.get_radius() * c.get_radius() * PI - b.get_side_length() * b.get_side_length();
        return shadow_area;
    }

    double L() {
        double shadow_perimeter = 2 * PI * c.get_radius() + 4 * b.get_side_length();
        return shadow_perimeter;
    }

    void set(const circle& c, const Box& b) {
        this->c = c;
        this->b = b;
    }
};

int main() {
    circle  A(4);    //圆的半径为4
    Box  B(1);      //正方形的边长为1
    NewStyle  C(A, B);
    cout << "自定义图形的面积" << C.S() << endl;
    cout << "自定义图形的周长" << C.L() << endl;
    A.set(6);      //圆的半径变为6
    B.set(2);      //正方形的边长变为2
    C.set(A, B);
    cout << "自定义图形的面积" << C.S() << endl;
    cout << "自定义图形的周长" << C.L() << endl;
    return  0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wdwc2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值