编译器:C++ (g++)
在一个平面内,由左上角(top left)顶点坐标结合右下角(bottom right)顶点坐标即可确定一个平面矩形。请设计Rect和Point类,使其可以被下述代码所利用,并产生期望的输出。
裁判测试程序样例:
函数接口定义:
输出样例:
Vertices of rectangle rt:
(1,6)-----------------------(7,6)
(1,8)-----------------------(7,8)
Size information of rectangle rt:
width - 6 height - 2
area - 12 diagonal legnth - 6.32
函数接口定义:
/* 请在这里填写答案 */
int main()
{
CRectangle liv_Rect(4,8);//实例化边长为4、8的长方形
CCuboid liv_Cub(4,4,8);// 实例化长方体,长方体的长宽高分别为4、4、8
cout<<liv_Rect.Area()<<','<<liv_Rect.Length()<<endl; //直接输出矩形的周长和面积
cout<<liv_Cub.Area()<<','<<liv_Cub.Length()<<endl; //直接输出长方体的周长和面积
Display(liv_Rect); //调用Display函数输出liv_Rect的周长和面积
Display(liv_Cub); //调用Display函数输出liv_Cub的周长和面积
return 0;
}
Ans:
#include <iostream>
#include <cmath>
using namespace std;
//定义Point类
class Point {
public:
int x;
int y;
Point(int x, int y):x(x),y(y){}
Point(){}
};
//定义Rect类
class Rect {
public:
Point tl;
Point br;
Rect(const Point& a, const Point& b) {
this->tl = a;
this->br = b;
}
Point topRight() {
Point temp(br.x, tl.y);
return temp;
}
Point bottomLeft() {
Point temp(tl.x, br.y);
return temp;
}
int width() {
return abs(br.x - tl.x);
}
int height() {
return abs(tl.y - br.y);
}
int area() {
return abs(br.x - tl.x) * abs(tl.y - br.y);
}
double diagonalLength() {
return sqrt(pow(abs(br.x - tl.x), 2) + pow(abs(tl.y - br.y), 2));
}
};