声明抽象基类Shape,由它派生出三个类,圆形Circle,矩形Rectangle,三角形Triangle,用一个函数输出三个面积。

输入格式:
在一行中依次输入5个数,圆的半径,长方形的高和宽,三角形的高和底,中间用空格分隔

输出格式:
圆的面积,长方形的面积,三角形的面积,小数点后保留2位有效数字,每个面积占一行。

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

3 3 4 3 4
输出样例:
在这里给出相应的输出。例如:

28.27
12.00
6.00

我的答案:
#include"iostream"
using namespace std;

class Shape
{
public:
virtual double area() = 0;
};
class Circle :public Shape
{
public:
double area() { return 3.1415 * r * r; };
Circle(double r) { this->r = r; };
private:double r;
};

class Rectangle :public Shape
{
public:
double area() { return w*h; };
Rectangle(double w, double h) { this->w = w; this->h = h; };
private:double w, h;
};

class Triangle :public Shape
{
public:
double area() { return b * h * 0.5; };
Triangle(double b, double h) { this->b = b; this->h = h; };
private:double b, h;
};

int main()
{
double a, b, c, d, e;
cin >> a >> b >> c >> d >> e;
Circle c1(a); Rectangle c2(b, c); Triangle c3(d, e);
printf("%.2f\n", c1.area());
printf("%.2f\n", c2.area());
printf("%.2f\n", c3.area());

}

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是回复: 首先声明一个抽象基类Shape,它包含一个纯虚函数getArea(),用于计算面积。然后派生三个CircleRectangle和Triangle,分别实现getArea()函数,计算圆形矩形三角形面积。最后定义一个函数printArea(),接收一个Shape型的指针,调用它的getArea()函数输出面积即可。 ### 回答2: 在面向对象编程中,抽象基类是一种特殊的,它不能被实例化,只能被继承。抽象基类的主要作用是将具有相似功能的进行归纳和分,方便代码的维护和重复利用。在本题中,声明一个抽象基类shape可以将三种不同形状的进行统一管理和封装。 具体实现方法如下: 1. 声明抽象基类shape,其中包含一个纯虚函数getArea(),用于计算面积。 class shape { public: virtual double getArea() = 0; }; 2. 派生三个具体的形状圆形circle矩形rectangle三角形triangle。这些派生需要实现抽象基类shape中的纯虚函数getArea()。 class circle : public shape { public: circle(double r) : radius(r) {} double getArea() {return 3.14 * radius * radius;} private: double radius; }; class rectangle : public shape { public: rectangle(double l, double w) : length(l), width(w) {} double getArea() {return length * width;} private: double length; double width; }; class triangle : public shape { public: triangle(double b, double h) : base(b), height(h) {} double getArea() {return 0.5 * base * height;} private: double base; double height; }; 3. 编写一个输出三个形状面积函数,使用抽象基类指针实现多态调用。 void printArea(shape* sh) { cout << "The area is " << sh->getArea() << endl; } 4. 在主函数中创建三个对象,并分别调用输出函数。 int main() { circle c(5); rectangle r(3, 4); triangle t(2, 5); printArea(&c); printArea(&r); printArea(&t); return 0; } 运行结果: The area is 78.5 The area is 12 The area is 5 通过使用抽象基类,我们可以将具有相似功能的进行分和管理,避免代码冗余和重复编写。同时,使用虚函数实现多态性,可以让同一个函数实现不同的功能,提高代码的灵活性和可维护性。 ### 回答3: 要实现声明抽象基类shape,可以定义一个Shape,其中定义了一个纯虚函数getArea(),用于返回该形状的面积。然后派生三个CircleRectangle和Triangle,分别实现getArea()函数,获取各自形状的面积。 具体实现可以如下: ```c++ #include <iostream> using namespace std; class Shape{ public: virtual double getArea()=0; }; class Circle : public Shape{ public: Circle(double r){ radius=r; } double getArea(){ return 3.14*radius*radius; } private: double radius; }; class Rectangle : public Shape{ public: Rectangle(double l, double w){ length=l; width=w; } double getArea(){ return length*width; } private: double length; double width; }; class Triangle : public Shape{ public: Triangle(double b, double h){ base=b; height=h; } double getArea(){ return 0.5*base*height; } private: double base; double height; }; void printArea(Shape *shape){ cout<<"面积为:"<<shape->getArea()<<endl; } int main(){ Circle c(3); Rectangle r(4,5); Triangle t(6,8); printArea(&c); printArea(&r); printArea(&t); return 0; } ``` 然后我们可以定义一个函数printArea,用于输出各个形状的面积。该函数接收一个Shape型的指针作为参数,根据指针所指向的对象调用getArea()函数获取面积,并输出。 以上就是实现声明抽象基类shape,从中派生三个圆形circle矩形rectangle三角形triangle,用一个函数输出三个面积的具体方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值