定義一個矩形類,數據成員包括左下角和右上角坐標,定義的成員函數包括必要的構造函數、輸入坐標的函數,實現矩形加法,以及計算並輸出矩形面積的函數。要求使用提示中給出的測試函數並不得改動。
兩個矩形相加的規則是:決定矩形的對應坐標分別相加,如
左下角(1,2),右上角(3,4)的矩形,與
左下角(2,3),右上角(4,5)的矩形相加,得到的矩形是
左下角(3,5),右上角(7,9)的矩形。
這個規則沒有幾何意義,就這麼定義好了。
輸出面積的功能通過重載"<<"運算完成。
本題可以在2383的基礎上擴展完成。
測試函數中第一個矩形直接初始化,第二個矩形通過鍵盤輸入。輸入四個數,分別表示第二個矩形左下角和右上角頂點的坐標,如輸入2.5 1.8 4.3 2.5,代表左下角坐標為(2.5, 1.8),右上角坐標為(4.3, 2.5)。
輸出兩點相加後得到的點的面積。運行測試函數時,p1的頂點是1 1 6 3,如果輸入的p2是2.5 1.8 4.3 2.5,計算得到的矩形p3的左下角坐標為(3.5, 2.8),右上角坐標為(10.3, 5.5),輸出為p3的面積18.36。
2.5 1.8 4.3 2.5
18.36
int main()
{
Rectangle p1(1,1,6,3),p2,p3;
p2.input();
p3=p1+p2;
cout<
return 0;
}
提交時請加上主函數。
代碼如下:
#includeusing namespace std; class Rectangle { public: Rectangle(double a=0,double b=0,double c=0,double d=0); void input(); friend Rectangle operator+(Rectangle &,Rectangle &); friend ostream &operator<<(ostream &output,Rectangle &s); private: double x1; double y1; double x2; double y2; }; Rectangle::Rectangle(double a,double b,double c,double d) { x1=a; y1=b; x2=c; y2=d; } void Rectangle::input() { cin>>x1>>y1>>x2>>y2; } Rectangle operator+(Rectangle &s1,Rectangle &s2) { Rectangle s; s.x1=s1.x1+s2.x1; s.y1=s1.y1+s2.y1; s.x2=s1.x2+s2.x2; s.y2=s1.y2+s2.y2; return s; } ostream & operator<<(ostream &output,Rectangle &s) { double S; S=(s.x2-s.x1)*(s.y2-s.y1); output< 運行結果:
學習心得:
這一題的內容是這一周需要學習的內容,還沒有去看視頻,但在書的幫助下還是做了出來。
心好累,還是格式錯誤了一次,,,題目提供了主函數,結果還要求加上主函數,,,但是一直以來大量的不需要提交題目給的函數的題目養成了這種慣性。。。所以。。。唉。得把題仔細讀完啊。。。