在本單元作業和作業的基礎上,建立乙個myrectangle類,並在main函式中建立類的例項。(10分)
題目難度: 難
題目內容:
screen類:
與作業要求完全相同。
如果你的作業順利通過,那麼你可以直接使用作業中screen類的**
myrectangle類:
myrectangle 代表的是乙個矩形。我們用矩形左上角和右下角兩個頂點的(x,y)座標來表示它
1. myrectangle類中的資料域有乙個唯一與screen類有關的成員,其型別為 screen* 型別
screen* screen_;
2. myrectangle類的帶參建構函式接受5個引數,其中前4個是整型引數
1)按照順序,整型引數分別為矩形的左上頂點的x1、y1座標,以及右下頂點的x2、y2座標。(在建構函式中,不檢查座標有效性,也就是說,哪怕座標出現負值,也不理會它。而是在後面的draw函式中再做有效性檢查)
2)按照順序,第5個引數為screen類的物件指標
//帶參建構函式原型宣告
myrectangle::myrectangle(int x1, int y1, int x2, int y2, screen* screen);
3. myrectangle類的預設建構函式將【左上----右下】對角線兩個點的座標均設定為原點座標(0,0)
//預設建構函式原型宣告
myrectangle::myrectangle();
4. myrectangle類的所有建構函式均應使用cout輸出字串「myrectangle」並換行(使用cout::endl)
5. myrectangle類中應提供setcoordinations()用於設定對角線的左側及右側頂點座標;該函式共有4個形式引數。這些引數的含義及型別與「帶參建構函式」的前4個引數相同。該函式將形式引數的值拷貝到類的私有資料域中。
6. myrectangle類中應提供setscreen(screen& screen)用於設定該類的例項所對應的screen物件;
1)也就是說,setscreen函式會將引用引數 screen 這個物件的位址賦給myrectangle類中的私有成員 screen_。
2)要注意:私有成員 screen_ 是物件指標型別,而setscreen的函式引數 screen 是物件引用型別
3)所以,必須要取 screen 的位址,然後將該位址賦值給私有成員 screen_
4)函式返回值型別由你自己決定
7. myrectangle類的draw()函式應檢查座標的有效性,確保矩形的頂點座標是合理的、在前述螢幕的寬和高範圍內是可見的(矩形框與螢幕框重合算是不可見、不合理);
1)如果上述座標不合理,則在draw()中用cout輸出「invalid myrectangle」然後換行(用std::endl);
2)如果上述座標合理,則在draw()中用cout輸出矩形的左上頂點的x、y座標以及矩形的寬度和高度(一共4個數值,任意兩個相鄰數值間以1個空格分隔;第4個數值後面沒有空格),然後換行(用std::endl)
8. 如有必要,則增加其他資料成員及函式成員
main() 函式:
需使用如下main()函式(不得更改)
int main()
delete myrectangles;
#ifdef debug
std::cin.get();
#endif
return 0;}
輸入格式:
空格分隔的整數
輸出格式:
字串或者
空格分隔的整數
輸入樣例:
800 600
30 20 300 200
輸出樣例:
screen
myrectangle
myrectangle
myrectangle
30 20 270 180
invalid myrectangle
10 300 690 200
#include using namespace std;
class screen
screen(int width, int height) :width(width), height(height)
int getwidth();
int getheight();
int setwidth(int width);
int setheight(int height);
};class myrectangle
;int screen::getwidth()
int screen::getheight()
int screen::setheight(int height)
void screen::exitwheninvalidscreen(int height, int width)
}int screen::setwidth(int width)
myrectangle::myrectangle():x1_(0),y1_(0),x2_(0),y2_(0)
myrectangle::myrectangle(int x1, int y1, int x2, int y2, screen* screen):
x1_(x1),y1_(y1),x2_(x2),y2_(y2),screen_(screen)
void myrectangle::setcoordinations(int x1, int y1, int x2, int y2)
void myrectangle::setscreen(screen& screen)
void myrectangle::draw()
else if (x1_ >= x2_ || y1_ >= y2_)
else }
int main()
delete myrectangles;
#ifdef debug
std::cin.get();
#endif
return 0;
}
C 小練習Clock類,Car類 C 小練習
我們在以前使用c語言實現的時候 定義變數 通過函式填充變數 去顯示變數 使用c 定義的變數 類內的資料成員 通過函式填充變數 構造器 去顯示變數 行為 屬性 時,分,秒 行為 run 在螢幕上實現電子時鐘 13 04 05 每隔一秒更新乙個顯示。分析構造時,初始化為當前系統時間,然後每隔一秒,刷屏。...
C 複數類編寫小練習
建立複數類。然後過載流操作運算子,能夠執行輸入輸出 10分 題目內容 1.關於複數 複數x被定義為二元有序實數對 a,b 記為z a bi,這裡a和b是實數,i是虛數單位。在複數a bi中,a re z 稱為實部,b im z 稱為虛部。當虛部等於零時,這個複數可以視為實數 當z的虛部不等於零時,實...
C 單例設計模式螢幕類練習
題目內容 以單例模式建立乙個螢幕screen物件。輸入格式 用空格分開的兩個整數,代表螢幕解析度 輸出格式 用空格分開的兩個整數,代表螢幕解析度。隨後有換行符 輸入樣例 800 600 輸出樣例 800 600 具體要求 請將如下 中的缺失部分補全 補全screen類中的資料域成員,給出適當的資料型...