Amélie的tt
幼苗
共回答了16个问题采纳率:100% 举报
// 梯形的没写,不记得面积公式了,但是写法和其他形状一样
#include
#include
using namespace std;
const double PI = 3.14;
class Shape {
public:
virtual double area() = 0;
virtual double girth() = 0;
};
class Circle : public Shape {
public:
Circle(double r) : radius(r) {}
double area() { return PI * radius * radius; }
double girth() { return 2 * PI * radius; }
private:
double radius;
};
class Square : public Shape {
public:
Square(double l) : length(l) {}
double area() { return length * length; }
double girth() { return 4 * length; }
private:
double length;
};
class Rectangle : public Shape {
public:
Rectangle(double h, double w) : height(h), width(w) {}
double area() { return height * width; }
double girth() { return 2 * (height + width); }
private:
double height, width;
};
class Triangle : public Shape {
public:
Triangle(double l1, double l2, double l3) : length_1(l1), length_2(l2), length_3(l3) {}
double area() {
return sqrt((length_1 + length_2 + length_3)
* (length_1 + length_2 - length_3)
* (length_1 + length_3 - length_2)
* (length_2 + length_3 - length_1)) / 4;
}
double girth() { return length_1 + length_2 + length_3; }
private:
double length_1, length_2, length_3;
};
int main() {
Shape* ShapeArray[4];
ShapeArray[0] = new Circle(10.0);
ShapeArray[1] = new Square(10.0);
ShapeArray[2] = new Rectangle(10.0, 15.0);
ShapeArray[3] = new Triangle(0.5, 0.6, 0.7);
//print area and girth for each shape;
for (int i = 0; i < 4; ++i) {
cout area()
1年前
3