C 螢幕類,矩形類簡單小練習

2021-08-28 13:57:17 字數 3323 閱讀 6558

在本單元作業和作業的基礎上,建立乙個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類中的資料域成員,給出適當的資料型...