长万形和园形都属于儿何图形,都有周长和面积,并日它们都有自己的周长和面积计算公式。使用抽缘 类的知识设计一个程序,可以计算不同图形的面积和周长
时间: 2023-05-20 18:04:38 浏览: 123
好的,我可以为您设计一个计算不同图形面积和周长的程序。首先,我们需要定义一个抽象类 Shape,它包含两个纯虚函数 getArea() 和 getPerimeter(),分别用于计算图形的面积和周长。然后,我们可以定义不同的子类,如 Rectangle、Circle、Triangle 等,它们都继承自 Shape 类,并实现自己的 getArea() 和 getPerimeter() 函数。
以下是一个简单的示例代码:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class Shape {
public:
virtual double getArea() = 0;
virtual double getPerimeter() = 0;
};
class Rectangle : public Shape {
public:
Rectangle(double w, double h) : width(w), height(h) {}
double getArea() { return width * height; }
double getPerimeter() { return 2 * (width + height); }
private:
double width, height;
};
class Circle : public Shape {
public:
Circle(double r) : radius(r) {}
double getArea() { return M_PI * radius * radius; }
double getPerimeter() { return 2 * M_PI * radius; }
private:
double radius;
};
class Triangle : public Shape {
public:
Triangle(double a, double b, double c) : sideA(a), sideB(b), sideC(c) {}
double getArea() {
double p = (sideA + sideB + sideC) / 2;
return sqrt(p * (p - sideA) * (p - sideB) * (p - sideC));
}
double getPerimeter() { return sideA + sideB + sideC; }
private:
double sideA, sideB, sideC;
};
int main() {
Shape* shapes[3];
shapes[0] = new Rectangle(3, 4);
shapes[1] = new Circle(2);
shapes[2] = new Triangle(3, 4, 5);
for (int i = 0; i < 3; i++) {
cout << "Shape " << i+1 << " area: " << shapes[i]->getArea() << endl;
cout << "Shape " << i+1 << " perimeter: " << shapes[i]->getPerimeter() << endl;
delete shapes[i];
}
return 0;
}
```
这个程序定义了三个子类 Rectangle、Circle 和 Triangle,它们分别代表矩形、圆形和三角形。在 main 函数中,我们创建了一个 Shape 类型的数组,其中存放了三个不同的图形。然后,我们遍历这个数组,分别调用每个图形的 getArea() 和 getPerimeter() 函数,输出它们的面积和周长。
输出结果如下:
```
Shape 1 area: 12
Shape 1 perimeter: 14
Shape 2 area: 12.5664
Shape 2 perimeter: 12.5664
Shape 3 area: 6
Shape 3 perimeter: 12
```
可以看到,程序成功计算了三个不同图形的面积和周长。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)