计算几种不同的三维图形的表面积和体积。这里定义一个抽象类CShape,将其成员函数显示基本图形信息函数DispAttr()、计算表面积函数SArea()和计算体积函数Volume()定义为纯虚函数。根据此抽象类派生出球体、正方体、长方体和圆柱体,并分别重新实现基类中的纯虚函数来显示输出计算结果。
时间: 2024-03-12 11:45:16 浏览: 127
好的,这是一个关于计算几种不同的三维图形的表面积和体积的问题。首先,我们可以定义一个抽象类CShape,该类包含三个纯虚函数:DispAttr()、SArea() 和 Volume(),它们用于显示基本图形信息、计算表面积和计算体积。
接下来,我们可以派生出四个具体的类:球体、正方体、长方体和圆柱体,并使用这些类重新实现基类中的纯虚函数。这些类的具体实现如下:
```cpp
#include<iostream>
#include<cmath>
using namespace std;
// 抽象类
class CShape {
public:
virtual void DispAttr() = 0; // 显示基本图形信息
virtual double SArea() = 0; // 计算表面积
virtual double Volume() = 0; // 计算体积
};
// 球体
class CSphere : public CShape {
private:
double radius;
public:
CSphere(double r) : radius(r) {}
void DispAttr() {
cout << "球体,半径为:" << radius << endl;
}
double SArea() {
return 4 * M_PI * radius * radius;
}
double Volume() {
return 4.0 / 3 * M_PI * radius * radius * radius;
}
};
// 正方体
class CCube : public CShape {
private:
double side;
public:
CCube(double s) : side(s) {}
void DispAttr() {
cout << "正方体,边长为:" << side << endl;
}
double SArea() {
return 6 * side * side;
}
double Volume() {
return side * side * side;
}
};
// 长方体
class CRectangle : public CShape {
private:
double length;
double width;
double height;
public:
CRectangle(double l, double w, double h) : length(l), width(w), height(h) {}
void DispAttr() {
cout << "长方体,长为:" << length << ",宽为:" << width << ",高为:" << height << endl;
}
double SArea() {
return 2 * (length * width + length * height + width * height);
}
double Volume() {
return length * width * height;
}
};
// 圆柱体
class CCylinder : public CShape {
private:
double radius;
double height;
public:
CCylinder(double r, double h) : radius(r), height(h) {}
void DispAttr() {
cout << "圆柱体,半径为:" << radius << ",高为:" << height << endl;
}
double SArea() {
return 2 * M_PI * radius * (radius + height);
}
double Volume() {
return M_PI * radius * radius * height;
}
};
int main() {
CShape* shapes[4];
shapes[0] = new CSphere(5);
shapes[1] = new CCube(3);
shapes[2] = new CRectangle(2, 3, 4);
shapes[3] = new CCylinder(2, 4);
for (int i = 0; i < 4; i++) {
shapes[i]->DispAttr();
cout << "表面积为:" << shapes[i]->SArea() << endl;
cout << "体积为:" << shapes[i]->Volume() << endl;
cout << endl;
}
return 0;
}
```
在这个程序中,我们创建了四个不同的 CShape 对象,分别是球体、正方体、长方体和圆柱体。我们可以使用这些对象的函数来计算它们的表面积和体积,并将结果输出到屏幕上。
这就是一个关于计算不同三维图形表面积和体积的示例程序。
阅读全文