早教吧作业答案频道 -->其他-->
c++编程题虚函数:编写一个程序,计算Circle(圆形)、Square(正方形)、Rectangle(矩形)、Triangle(三角形)、Trapezoid(梯形)的面积与周长。(1)设计一个图形抽象基类Shape类,以及由它
题目详情
c++编程题
虚函数:编写一个程序,计算Circle(圆形)、Square(正方形)、Rectangle(矩形)、Triangle(三角形)、Trapezoid(梯形)的面积与周长。
(1)设计一个图形抽象基类Shape类,以及由它派生出5个类Circle(圆形)类、Square(正方形)类、Rectangle(矩形)类、Triangle(三角形)类、Trapezoid(梯形)类;
(2)在Shape类中包括纯虚函数area和girth;
(3)分别在Circle(圆形)类、Square(正方形)类、Rectangle(矩形)类、Triangle(三角形)类、Trapezoid(梯形)类中定义这两个函数,用于计算面积和周长。
(4)主函数中要求用基类指针数组,使它的每一个元素指向一个派生类对象,分别计算Circle(圆形)类、Square(正方形)类、Rectangle(矩形)类、Triangle(三角形)类、Trapezoid(梯形)类对象的面积和周长。
虚函数:编写一个程序,计算Circle(圆形)、Square(正方形)、Rectangle(矩形)、Triangle(三角形)、Trapezoid(梯形)的面积与周长。
(1)设计一个图形抽象基类Shape类,以及由它派生出5个类Circle(圆形)类、Square(正方形)类、Rectangle(矩形)类、Triangle(三角形)类、Trapezoid(梯形)类;
(2)在Shape类中包括纯虚函数area和girth;
(3)分别在Circle(圆形)类、Square(正方形)类、Rectangle(矩形)类、Triangle(三角形)类、Trapezoid(梯形)类中定义这两个函数,用于计算面积和周长。
(4)主函数中要求用基类指针数组,使它的每一个元素指向一个派生类对象,分别计算Circle(圆形)类、Square(正方形)类、Rectangle(矩形)类、Triangle(三角形)类、Trapezoid(梯形)类对象的面积和周长。
▼优质解答
答案和解析
// 梯形的没写,不记得面积公式了,但是写法和其他形状一样
#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 << ShapeArray[i]->area() << '\t' << ShapeArray[i]->girth() << endl;
}
return 0;
}
#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 << ShapeArray[i]->area() << '\t' << ShapeArray[i]->girth() << endl;
}
return 0;
}
看了 c++编程题虚函数:编写一个...的网友还看了以下:
把一个长方体分割成两个小正方体,它的体积和表面积与原来相比是()A体积增加,表面积减小B体积减小,表 2020-03-30 …
初三一元二次方程问题:一个广告公司制作广告的收费标准是:以面积为单位,在不超过规定面积A(m2)一个 2020-03-30 …
关于元和扇形的一个几何问题将一张圆形纸片沿半径剪开成A、B、C三个扇形,已知A的面积比B的面积小1 2020-04-24 …
下列各句中,加点的成语使用正确的一项是()A.一面贪图享乐,一面又想静心修道,自以为可以左右逢源的 2020-05-13 …
现有3张牌,一张正反为A,一张正反为B,一张一面为A一面为B现抽1张,仅知道一面的情况下,如何判断 2020-05-13 …
将一张圆形铝皮,沿半径剪开成A,B,C三个扇形.已知A的面积比B的面积小1/3,B的面积比C的面积 2020-05-14 …
有4扇门,每扇门的面积(一面)是1.5平方米,如果每平方米用油漆0.25千克,那么这4扇门(两面都 2020-05-15 …
一片森林面积为a,计划每年砍伐一批木材,每年砍伐面积的百分比相等,则砍伐到面积的一半时,所用时间是 2020-05-20 …
初一数学题不等式的一个面积为2400㎡的大棚,设A、B两种店面,共80间,A:28㎡,400元,B 2020-06-06 …
小说以哄笑来写孔乙己的悲剧.这样写有什么特殊的艺术效果?理解不正确的一项是A.一面是悲惨的遭遇和伤 2020-06-08 …