C 物件指標與物件陣列(拉丁舞)

2021-09-13 21:07:59 字數 1953 閱讀 5249

怡山小學畢業文藝晚會上,拉丁舞是最受歡迎的節目。不過,每年為了排練這個節目,舞蹈組都會出現一些糾紛。有些同學特別受歡迎,有些卻少人問津,因此安排舞伴成為舞蹈組陳老師最頭疼的問題。

為了解決這一問題,今年陳老師決定讓按先男生後女生,先低號後高號的順序,每個人先報上自己期待的舞伴,每人報兩位,先報最期待的舞伴。接下來按先男生後女生,先低號後高號的順序,依次按以下規則匹配舞伴:

(1)每個人均按志願順序從前到後確定舞伴。如果第一志願匹配不成功,則考慮第二志願。

(2)如果a的當前志願為b,則如果b未匹配舞伴,且有以下情形之一者,a和b匹配成功:

2a) b的期待名單中a。

2b) b的期待名單中沒有a,但b期待的兩位舞伴均已匹配成功,所以b只能與a湊合。

輸入時先輸入男生數m, 接下來m行,第一項為學生的姓名,後兩項為期待舞伴的編號,編號從0開始,最大為女生數減1。接下來輸入女生數f,接下來f行,第一項為學生的姓名,後兩項為期待舞伴的編號,編號從0開始,最大為男生數減1。

輸出時按男生的編號順序輸出  姓名:舞伴姓名

注意兩個姓名間有冒號隔開

student的兩個成員函式:

void

printpair()

;void

addpair()

;

#include

#include

using namespace std;

const

int k=2;

const

int n=20;

class student

void

printpair()

;void

addpair()

;};/* 請在這裡填寫答案 */

intmain()

cin>>f;

for(i=

0;i)for

(i=0

;i) male[i]

.addpair()

;for

(i=0

;i) female[i]

.addpair()

;for

(i=0

;i) male[i]

.printpair()

;return0;

}

5

m0 3 1

m1 1 3

m2 1 4

m3 3 1

m4 0 3

5f0 0 2

f1 2 0

f2 2 1

f3 2 4

f4 3 2

m0:f1

m2:f4

m4:f0

(1)m0先選擇f3, 但f3並未期待m0;接下來m0選擇f1, f1也期待m0,故匹配成功。

(2)m1選擇f1, 但f1已匹配,故,不成功;m1選擇f3,但f3未期待m1,仍然不成功。

(3)m2選擇f1,f1已匹配;m2選擇f4, f4未匹配且也期待m2,故匹配成功。

(4)m3選擇f3,但f3未期待他,不成功;m3選擇f1,f1已匹配,不成功。

(5)m4選擇f0, f0不期待m4,但是f0期待的m0和m2已分配,所以湊合,匹配成功。

(6)f0已匹配, f1已匹配。

(7)f2選擇m2, m2已匹配,不成功; f2選擇m1, m1未匹配,但期待表中沒有f2,且f3也未分配,故不成功。

(8)f3選擇m2, m2已匹配,不成功;f3選擇m4, m4已匹配,不成功。

(9)f4已匹配。

void student:

:addpair()

}for

(int j=

0;j<

2;j++

)//如果期待的名單上未匹配成功,則考慮湊合情況}}

}void student:

:printpair()

C 之物件陣列與物件指標

是指每乙個陣列元素都是物件的陣列,也就是說,若乙個類有若干個物件,我們把一系列的物件用乙個陣列來存放。物件陣列的元素是物件,不僅具有資料成員,而且還有函式成員。格式 類名 陣列名 下標表示式 在建立陣列時,同樣要呼叫建構函式。有幾個陣列元素就要呼叫幾次建構函式。1 當只需要乙個引數時,在定義物件陣列...

C 物件陣列與this指標

標籤 空格分隔 c 版本 2該文章僅被發布於作業部落 原 csdn 由於在c 中我們可以直接操作堆和棧,所以在宣告時我們也需要選擇陣列的建立方式。有一種最顯而易見的方法去判斷變數的儲存狀態,就是看物件建立時有沒有用new關鍵字。1,棧陣列棧物件 顧名思義就是陣列和物件都在當前棧中分配,帶來的好處就是...

bool指標 如何賦值 C 物件陣列與物件指標

所謂物件陣列是指每一陣列元素都是物件的陣列,也就是說,若乙個類有若干個物件,則把這一系列的物件用乙個陣列來存放。物件陣列的元素是物件,不僅具有資料成員,而且還有函式成員 定義乙個一維陣列的格式如下 類名 陣列名 下標表示式 exam ob 4 定義了類exam的物件陣列ob.與基本資料型別的陣列一樣...