Problem D 兒童繪畫遊戲

2021-09-24 09:39:42 字數 3331 閱讀 1299

problem d: 兒童繪畫遊戲

time limit: 1 sec  

memory limit: 128 mb

submit: 427  

solved: 302 [

submit][

status]

現在要開發乙個兒童繪畫遊戲。多名兒童可以在同乙個軟體中,繪製長方形和圓形。請至少定義如下類及其成員:

1.shape類:圖形類,包括乙個靜態成員函式getcntofshapes()用於獲得總共繪製了多少個圖形。

2.rectangle類:矩形類,是shape類的子類,包括:

(1)兩個double型別的屬性,表示矩形的長、寬。

(2)靜態成員函式getcntofrects()用於獲取繪製的矩形的個數。

3.circle類:圓形類,是shape類的子類,包括:

(1)乙個double型別的屬性,是圓形的半徑。

(2)靜態成員函式getcntofcircles()用於獲得圓形的個數。

4.user類:使用者類,包括:

(1)乙個string型別屬性,是使用者的名字。

(2)乙個shape的列表,表示該使用者繪製的圖形的列表。

(3)建構函式user(string s),引數s是使用者名稱。

(4)靜態成員函式getcntofusers()用於獲取使用者個數。

(5)addashape(int t,double a,double b):如果t=1,則表示繪製了乙個矩形,其長、寬即a和b;如果t=2,則表示繪製了乙個圓形,半徑為a。

(6)double getarea()方法:返回該使用者繪製的所有圖形的面積。

5.userlist類:使用者列表類,包括:

(1)乙個user的列表。

(2)showtotalarea(string s)方法:如果s指定的使用者名稱存在,則輸出相應使用者的繪製的圖形的面積之和;如果s指定的使用者不存在,則輸出:

the user $ doesn't exist.

其中$為s的值。

(3)過載的輸入運算子,用於輸入所有的使用者及他們繪製的圖形。輸入格式為:

第1行整數n>0,表示有n個使用者,後面的n行,每行對應乙個使用者。

每個使用者的第1個字串是該使用者的名字。之後是乙個正整數m,表示該使用者繪製了m個圖形。之後有m組輸入,每組輸入第1個整數t表示圖形的型別,1和2分別表示矩形和圓形;如果t為1,則之後的2個實數是矩形的長、寬;如果t為2,則之後的1個實數為圓形的半徑。

(4)過載的輸出運算子,按照如下格式輸出所有使用者及其繪製的圖形:

每個使用者佔一行,格式為:

$ : rect(a,b),circle(r),…

其中,$為使用者名稱。冒號之後是該使用者繪製的圖形的列表,輸出順序與輸入順序相同。如果該圖形是矩形,則輸出」rect(a,b)」,其中a和b是矩形的長、寬;如果該圖形是圓形,則輸出」circle(r)」,其中r是半徑。輸出的圖形資訊兩兩之間用乙個逗號隔開。

輸入分為2部分。

第1部分是按照userlist類的要求輸入的使用者及圖形資訊。

第2部分有多行,每行包括1個字串,是乙個使用者名稱。

假定所有的使用者名稱均不相同。

見樣例。

3 tom 3 1 1.1 2.2 2 3.3 1 2.1 3.2 jerry 2 2 3.1 2 4.4 mary 4 1 1.3 1.4 1 2.5 3.1 2 3.5 2 5.6 cui tom jerry mary mary

in beginning, 0 users,0 shapes. 30.26 now, 4 users,11 shapes, including 6 circles, and 5 rectangles. tom : rect(1.1,2.2),circle(3.3),rect(2.1,3.2) jerry : circle(3.1),circle(4.4) mary : rect(1.3,1.4),rect(2.5,3.1),circle(3.5),circle(5.6) the user cui doesn't exist. 43.3346 90.9658 the user mary doesn't exist. 146.505

#include

#include

#include

#include

#include

using namespace std;

class shape

virtual double

getarea()

=0;static

intgetcntofshapes()

virtual void

show()

=0;}

;class rectangle:public shape

double

getarea()

void

show()

static

intgetcntofrects()

};class circle:public shape

double

getarea()

void

show()

static

intgetcntofcircles()

};class user

static

intgetcntofusers()

void

addashape

(int t,

double a,

double b =0)

else

if(t==2)

}double

getarea()

return sum;}}

;class userlist}if

(flag ==0)

}

friend istream& operator >>

(istream &is,userlist &u)

else

if(t ==2)

} u.c.

push_back

(s);

}return is;

}

friend ostream &operator<<

(ostream &os,userlist &u)

} os << endl;

}return os;}}

;int shape:

:count =0;

int circle:

:count =0;

int user:

:count =0;

int rectangle:

:count =0;

intmain()

return0;

}

Problem D 棧小遊戲

小明想深入了解stack 棧 的用法,所以他打算寫乙個類來模擬一下。但是他沒有學過c 中強大的stl,所以他現在向你求助了。請幫他編寫乙個類operation,包括4個屬性 1.vectordata 儲存用於 的資料。2.stackistack 棧。3.vectoropers 對棧的操作。4.vec...

「Pig Latin」英語兒童文字改寫遊戲

題目內容 pig latin 是乙個英語兒童文字改寫遊戲,整個遊戲遵從下述規則 1 母音字母是 a e i o u 字母 y 在不是第乙個字母的情況下,也被視作母音字母。其他字母均為子音字母。例如,單詞 yearly 有三個母音字母 分別為 e a 和最後乙個 y 和三個子音字母 第乙個 y r 和...

lisp語言畫地物符號 繪畫是兒童的第二語言

兒童的語言學習在很大程度上重複著人類祖先的方式。也就是說,在還沒有形成通用語言文字的漫長歲月裡,我們的祖先一邊用咿咿呀呀的言語交流,一邊用符號和圖示記事。兒童用短暫的時光完成了人類進化歷程數百萬年的語言學習與詞語積累。但依然繼承了用符號和圖畫記事 交流的方式,尤其是畫畫。一 兒童繪畫的基本特徵。對兒...