计算正方体,球体和圆柱体的表面积和体积
时间: 2023-09-29 13:04:47 浏览: 321
正方体的表面积为6a^2,体积为a^3,其中a为正方体的边长;球体的表面积为4πr^2,体积为(4/3)πr^3,其中r为球体的半径;圆柱体的表面积为2πrh+2πr^2,体积为πr^2h,其中r为圆柱体的底面半径,h为圆柱体的高。您还有其他问题吗?为了增加一些趣味性,给您讲个笑话吧:为什么有的人睡觉时会打鼾?因为维护世界和平也需要一种声音。
相关问题
编写计算正方体、圆柱体、球体的表面积和体积的类。要去:\n(1)\t这三个类有一个公共的基类;\n(2)\t这三个类计算正方体、圆柱体、球体的表面积和体积的成员函数名字相同;\n(3)\t按照运行时的多态性方法设
计算正方体、圆柱体、球体的表面积和体积的类应该包括一个公共的基类,这三个类的成员函数名字相同,可以按照运行时的多态性方法实现。具体实现可以参考以下代码:
```
class Shape {
public:
virtual double getVolume() = ;
virtual double getSurfaceArea() = ;
};
class Cube : public Shape {
public:
Cube(double sideLength) : sideLength(sideLength) {}
double getVolume() override {
return sideLength * sideLength * sideLength;
}
double getSurfaceArea() override {
return 6 * sideLength * sideLength;
}
private:
double sideLength;
};
class Cylinder : public Shape {
public:
Cylinder(double radius, double height) : radius(radius), height(height) {}
double getVolume() override {
return 3.14 * radius * radius * height;
}
double getSurfaceArea() override {
return 2 * 3.14 * radius * height + 2 * 3.14 * radius * radius;
}
private:
double radius;
double height;
};
class Sphere : public Shape {
public:
Sphere(double radius) : radius(radius) {}
double getVolume() override {
return 4. / 3. * 3.14 * radius * radius * radius;
}
double getSurfaceArea() override {
return 4 * 3.14 * radius * radius;
}
private:
double radius;
};
```
在这个实现中,我们定义了一个名为Shape的基类,其中包含了两个纯虚函数getVolume和getSurfaceArea,分别用于计算形状的体积和表面积。然后我们分别定义了Cube、Cylinder和Sphere三个派生类,它们都继承自Shape基类,并实现了基类中的两个纯虚函数。在这三个类中,我们使用了不同的公式来计算不同形状的体积和表面积。由于这三个类都继承自Shape基类,并实现了基类中的两个纯虚函数,因此它们可以被当作Shape类型的对象来使用,实现了运行时的多态性。
要求建立3个继承container的派生类cube、sphere与cylinder,让每一个派生类都包含虚函数surface_area()和volume(),分别用来计算正方体、球体和圆柱体的表面积及体积。要求写出主程序,应用C++的多态性,分别计算边
以下是符合您要求的代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
class Container {
public:
virtual double surface_area() = 0;
virtual double volume() = 0;
};
class Cube : public Container {
private:
double length;
public:
Cube(double l) : length(l) {}
double surface_area() {
return 6 * length * length;
}
double volume() {
return length * length * length;
}
};
class Sphere : public Container {
private:
double radius;
public:
Sphere(double r) : radius(r) {}
double surface_area() {
return 4 * M_PI * radius * radius;
}
double volume() {
return 4.0 / 3.0 * M_PI * radius * radius * radius;
}
};
class Cylinder : public Container {
private:
double height;
double radius;
public:
Cylinder(double h, double r) : height(h), radius(r) {}
double surface_area() {
return 2 * M_PI * radius * height + 2 * M_PI * radius * radius;
}
double volume() {
return M_PI * radius * radius * height;
}
};
int main() {
Container* c[3];
c[0] = new Cube(2);
c[1] = new Sphere(3);
c[2] = new Cylinder(4, 2);
for (int i = 0; i < 3; i++) {
cout << "Container " << i+1 << " surface area: " << c[i]->surface_area() << endl;
cout << "Container " << i+1 << " volume: " << c[i]->volume() << endl << endl;
}
return 0;
}
```
在这个程序中,我们定义了一个 Container 类,并声明了两个纯虚函数 surface_area() 和 volume()。然后我们定义了三个派生类 Cube、Sphere 和 Cylinder,并分别实现了这两个纯虚函数。在主程序中,我们创建了一个 Container 类型的数组,并将三个派生类的对象存储在其中。然后我们使用 for 循环遍历数组,并分别调用每个对象的 surface_area() 和 volume() 函数,利用多态性来计算每个容器的表面积和体积。
阅读全文