6-2 使用类输出图形

6-2 使用类输出图形

分数 5

全屏浏览题目

切换布局

作者 刘骥

单位 重庆大学

声明一个图形基类 Shape,在它的基础上派生出矩形类 Rectangle 和圆形类 Circle,他们都有计算面积和周长、输出图形信息等成员函数,再在 Rectangle 类的基础上派生出正方形类 Square。编写程序完成各类的定义和实现,以及类的使用。
注意:
题目中定义的所有数值类型的变量都使用 double 类型
π的值为 3.14159

测试程序样例:

 

#include <iostream> #define PI 3.14159 using namespace std; class Shape{ public: double getArea(){return 0;} double getPerimeter(){return 0;} }; class Rectangle:public Shape { protected: double height; double width; public: Rectangle() {}; Rectangle(double _height, double _width) { height = _height; width = _width; } double getArea(){ return height * width; } double getPerimeter(){ return 2 * (height + width); } void Print(){ cout << "Width=" << width << ",Height=" << height << endl; } }; /* 请在这里填写答案 */ int main() { double ra, rb; cin >> ra >> rb; Rectangle r1(ra, rb); double sa; cin >> sa; Square s1(sa); double ca, cb, cc; cin >> ca >> cb >> cc; Circle c1(ca, cb, cc); cout << "Rectangle" << endl; r1.Print(); cout << "Area=" << r1.getArea() << endl; cout << "Perimeter=" << r1.getPerimeter() << endl ; cout << "Square" << endl; s1.Print(); cout << "Area=" << s1.getArea() << endl; cout << "Perimeter=" << s1.getPerimeter() << endl; cout << "Circle" << endl; c1.Print(); cout << "Area=" << c1.getArea() << endl; cout << "Perimeter=" << c1.getPerimeter() << endl; return 0; }

输入样例:

在这里给出一组输入。例如:

4 2.5
8
4 5 6.5

输出样例:

Rectangle
Width=2.5,Height=4
Area=10
Perimeter=13
Square
Side=8
Area=64
Perimeter=32
Circle
Center=[4,5],Adius=6.5
Area=132.732
Perimeter=40.8407

提示

需要补充的类定义如下:

 

class Square:public Rectangle{ //...... }; class Circle: public Shape{ //...... };

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

class Square : public Shape
{
private:
    double m_l;
public:
    Square() {};
    Square(double l)
    {
        m_l = l;
    }
    double getArea()
    {
        return  m_l* m_l;
    }
    double getPerimeter()
    {
        return 4 * m_l;
    }
    void Print()
    {
        cout << "Side=" << m_l << endl;
    }
};
class Circle :public Shape
{
private:
    double m_r;
    double m_x;
    double m_y;
public:
    Circle() {};
    Circle(double x,double y,double r)
    {
        m_x = x;
        m_y = y;
        m_r = r;
    }
    double getArea()
    {
        return PI * m_r * m_r;
    }
    double getPerimeter()
    {
        return 2*PI*m_r;
    }
    void Print()
    {
        cout << "Center=" << '[' << m_x << ',' << m_y << ']' << ',' << "Adius=" << m_r << endl;
    }
};

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你解答这个问题。 计算各种图形的周长可以使用多态来实现。多态是指同一个方法名可以在不同的中具有不同的实现方式。在这个问题中,我们可以定义一个抽象 Shape,它包含一个方法 getPerimeter(),用于计算图形的周长。然后,我们可以创建不同的子,每个子都实现 getPerimeter() 方法以计算其特定型的图形的周长。 下面是一个示例代码: ```python # 定义 Shape 抽象 class Shape: def getPerimeter(self): pass # 定义 Circle 子 class Circle(Shape): def __init__(self, radius): self.radius = radius def getPerimeter(self): return 2 * 3.14 * self.radius # 定义 Square 子 class Square(Shape): def __init__(self, side): self.side = side def getPerimeter(self): return 4 * self.side # 定义 Triangle 子 class Triangle(Shape): def __init__(self, a, b, c): self.a = a self.b = b self.c = c def getPerimeter(self): return self.a + self.b + self.c # 测试 circle = Circle(10) print("圆的周长:", circle.getPerimeter()) square = Square(5) print("正方形的周长:", square.getPerimeter()) triangle = Triangle(3, 4, 5) print("三角形的周长:", triangle.getPerimeter()) ``` 输出: ``` 圆的周长: 62.800000000000004 正方形的周长: 20 三角形的周长: 12 ``` 在上面的代码中,我们定义了 Shape 抽象和三个子 Circle、Square 和 Triangle。每个子都实现了 getPerimeter() 方法以计算其特定型的图形的周长。在主程序中,我们创建了一个 Circle 对象、一个 Square 对象和一个 Triangle 对象,并分别调用它们的 getPerimeter() 方法来计算它们的周长。 希望这个示例代码能够帮助你理解如何使用多态来计算各种图形的周长。如果你有更多的问题,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值