【C++

您所在的位置:网站首页 立方体类型 【C++

【C++

2024-07-17 20:19| 来源: 网络整理| 查看: 265

文章目录 题目要求代码

题目要求

从立方体、圆柱体抽象出一个公共基类Container,定义抽象类Container,模拟实现一个容器类层次结构,在主函数进行多态机制测试。各派生类要求实现基类的所有纯虚函数。

抽象类

class Container { protected: static double pi; public: virtual double area()=0; //纯虚函数,计算对象的表面积 virtual double volume()=0; //纯虚函数,计算对象的体积 static double sumofarea(Container *c[],int n) ; //静态成员函数,计算所有对象的面积之和 static double sumofvolume(Container *c[],int n); //静态成员函数,计算所有对象的体积之和 }; double Container::pi=3.1415926;

Cube类、Cylinder类均继承抽象类Container。 Cube类(属性:边长double类型)、Cylinder类(属性:底圆半径、高,double类型)。

在主函数用new运算符生成若干容器类的堆对象,定义基类指针数组,其元素分别指向不同容器类对象,实现多态的异质数组,通过调用Container::sumofarea、Container::sumofvolume计算所有容器对象的表面积之和、体积之和 。

输入格式: 第一行n表示对象个数,对象类型用cube、cylinder区分,cube表示立方体对象,后面输入边长,cylinder表示圆柱体对象,后面是底圆半径、高。

输出格式: 分别输出所有容器对象的表面积之和、体积之和,结果保留小数点后2位。

输入样例: 在这里给出一组输入。例如: 4 cube 15.7 cylinder 23.5 100 cube 46.8 cylinder 17.5 200

输出样例: 在这里给出相应的输出。例如: 56771.13 472290.12

代码 #include #include //用于控制输出格式 using namespace std; class Container { protected: static double pi; //静态成员变量,表示π public: virtual double area() = 0; //纯虚函数,计算对象的表面积 virtual double volume() = 0; //纯虚函数,计算对象的体积 static double sumofarea(Container *c[], int n); //静态成员函数,计算所有对象的面积之和 static double sumofvolume(Container *c[], int n); //静态成员函数,计算所有对象的体积之和 }; double Container::pi = 3.1415926; Container *pShapes[100]; //定义基类指针数组 //Cube 类 class Cube : public Container { public: double lenth; //边长 double area() { return lenth * lenth * 6; } //重载 area 函数,计算立方体的表面积 double volume() { return lenth * lenth * lenth; } //重载 volume 函数,计算立方体的体积 }; //Cylinder 类 class Cylinder : public Container { public: double round, height; //底圆半径和高 double area() { return 2 * pi * round * height + 2 * pi * round * round; } //重载 area 函数,计算圆柱体的表面积 double volume() { return pi * round * round * height; } //重载 volume 函数,计算圆柱体的体积 }; //计算所有对象的面积之和 double Container::sumofarea(Container *c[], int n) { int i; double sum = 0; for (i = 0; i area(); } cout


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3