11.8 Quadrilateral_Inheritance
描述
按照书本11.8描述编写四边形的类继承结构
支持求四边形的周长和面积(getPerimeter,getArea2函数)
支持判断四边形类型,使用check函数进行判断
为了统一实现方式,请将以下代码作为你的递交代码中的实现部分(main函数),复制过去递交
int main()
{
Quadrilateral a;
cin >> a;
cout << fixed << setprecision(2) << a.getPerimeter();
cout << ' ';
cout << a.getArea2()<<endl;
Trapezoid tr(a);
if (tr.check()) cout << "YES\n";
else cout << "NO\n";
//套娃警告
Parallelogram par(a);
if (par.check())
{
Rectangle rec(par);
if (rec.check())
{
Square sq(rec);
if (sq.check()) cout << "square";
else cout << "rectangle";
}
else cout << "parallelogram";
}
else cout << "NO";
}
输入
输入包含4行,每行两个整数\(x,y\),分别表示四边形四个点的坐标
点会以顺时针顺序给出
输入数据保证输入的四个点一定能构成一个四边形
坐标的绝对值不超过100
输出
输出3行
第一行输出四边形的周长和面积,用一个空格隔开,周长保留两位小数,面积输出两倍。
(面积的两倍一定是整数,思考一下为什么?)
第二行输出四边形是否为梯形,是则输出"YES",否则输出"NO"
第三行输出四边形的形状,若为正方形则输出"square",矩形输出"rectangle",平行四边形输出"parallelogram",其它四边形输出"NO"(写出类的继承关系和check函数)
输入样例1
0 0
0 2
3 5
3 1
输出样例1
13.40 18
YES
NO
输入样例2
0 0
0 5
5 5
5 0
输出样例2
20.00 50
NO
square
提示
注意四边形可能是斜着的矩形/梯形等
注意构造函数的嵌套(套娃)
推荐给每个类写带有一个Quadrilateral对象作为参数的构造函数
可以利用向量的数量积和矢量积来判断平行、垂直和求面积