#include <iostream> using namespace std; #include<string> #include"time.h" #include"math.h" #define PI 3.14 //亲在begin和end之间完成各个类的定义及实现 /*********begin**********/ /**********end********/ int main() { int n; double height,r,t1,t2,t3,l; cin>>n>>height>>r;//输入n=0,表示圆柱体 Circularcolumn c1(n,height,r); cin>>n>>height>>t1>>t2>>t3;//输入n=3,表示三棱柱 Triangularprism t(n,height,t1,t2,t3); cin>>n>>height>>l;//输入n=4表示正四棱柱 Quadrangular qu(n,height,l); Body *body[3]; body[0]=&c1; body[1]=&t; body[2]=&qu; double superficalsum=0; double volumesum=0; for(int i=0;i<3;i++) { volumesum+=body[i]->volume();//volume()获取该体的体积 superficalsum+=body[i]->superficialarea();//获取该体的表面积 } cout<<"all volume="<<volumesum<<endl; cout<<"all superfilarea="<<superficalsum<<endl; }补充代码
时间: 2023-08-02 15:06:54 浏览: 77
以下是补充代码:
```
class Body {
public:
Body(int n, double height) : _n(n), _height(height) {}
virtual double volume() = 0;//纯虚函数,获取体积
virtual double superficialarea() = 0;//纯虚函数,获取表面积
protected:
int _n;//多边形的边数
double _height;//多边形的高度
};
class Circularcolumn : public Body {
public:
Circularcolumn(int n, double height, double r) : Body(n, height), _r(r) {}
double volume() { return PI * pow(_r, 2) * _height; }//圆柱体的体积公式
double superficialarea() { return 2 * PI * _r * (_height + _r); }//圆柱体的表面积公式
private:
double _r;//圆柱体的底面半径
};
class Triangularprism : public Body {
public:
Triangularprism(int n, double height, double t1, double t2, double t3) : Body(n, height), _t1(t1), _t2(t2), _t3(t3) {}
double volume() { return _t1 * _t2 * _height * 0.5; }//三棱柱的体积公式
double superficialarea() { return _t1 * _height + _t2 * _height + _t3 * _height + sqrt(pow(_t1 - _t2, 2) + pow(_t3, 2)) * _height; }//三棱柱的表面积公式
private:
double _t1, _t2, _t3;//三棱柱的三条棱长
};
class Quadrangular : public Body {
public:
Quadrangular(int n, double height, double l) : Body(n, height), _l(l) {}
double volume() { return pow(_l, 2) * _height; }//正四棱柱的体积公式
double superficialarea() { return 2 * pow(_l, 2) + 4 * _l * _height; }//正四棱柱的表面积公式
private:
double _l;//正四棱柱的底边长
};
```
阅读全文