补充代码,实现输入一组三棱柱,四棱柱,及圆柱体,求并输出该组棱柱体的体积之和 #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; }部分代码如下: class Plane { public: double _area; double area(){return _area;} }; class Body { public : int num;//棱的数量,0为圆柱体 double height; Plane plane; double _superficialarea; double _volume; public: Body() {} double volume(){return _volume;} Body(int n,double h,Plane pl):num(n),height(h),plane(pl){} double superficialarea(){return _superficialarea; } };
时间: 2024-01-10 13:04:30 浏览: 122
完整代码如下:
```c++
#include <iostream>
#include <math.h>
using namespace std;
#define PI 3.1415926
class Plane {
public:
double _area;
double area(){
return _area;
}
};
class Body {
public :
int num;//棱的数量,0为圆柱体
double height;
Plane plane;
double _superficialarea;
double _volume;
public:
Body(){}
Body(int n, double h, Plane pl):num(n), height(h), plane(pl){}
virtual double volume(){}
virtual double superficialarea(){}
};
class Circularcolumn : public Body {
public:
double r;
Circularcolumn(int n, double height, double r): Body(n, height, Plane()), r(r) {}
double volume(){
return PI * r * r * height;
}
double superficialarea(){
return 2 * PI * r * (r + height);
}
};
class Triangularprism : public Body {
public:
double t1, t2, t3;
Triangularprism(int n, double height, double t1, double t2, double t3): Body(n, height, Plane()), t1(t1), t2(t2), t3(t3) {}
double volume(){
double a = (t1 + t2 + t3) / 2;
return height * sqrt(a * (a - t1) * (a - t2) * (a - t3));
}
double superficialarea(){
return t1 * t2 + t2 * t3 + t3 * t1 + sqrt((t1 + t2 + t3) * (t1 + t2 - t3) * (t1 + t3 - t2) * (t2 + t3 - t1)) * height;
}
};
class Quadrangular : public Body {
public:
double l;
Quadrangular(int n, double height, double l): Body(n, height, Plane()), l(l) {}
double volume(){
return height * l * l;
}
double superficialarea(){
return 2 * height * l + 2 * l * l;
}
};
int main() {
int n;
double height, r, t1, t2, t3, l;
cin >> n >> height >> r;
Circularcolumn c1(n, height, r);
cin >> n >> height >> t1 >> t2 >> t3;
Triangularprism t(n, height, t1, t2, t3);
cin >> n >> height >> l;
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();
superficalsum += body[i]->superficialarea();
}
cout<<"all volume="<<volumesum<<endl;
cout<<"all superfilarea="<<superficalsum<<endl;
return 0;
}
```
运行结果与前面的实现一致。
阅读全文