跳舞搭配問(wèn)題課程設(shè)計(jì)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p> ?。ㄒ唬?PROTEL部分</p><p><b>  1.任務(wù)說(shuō)明:</b></p><p>  (1) 熟練掌握PROTEL軟件的使用;</p><p>  (2) 按要求繪制電路原理圖和PCB版圖(能夠用自動(dòng)布線(xiàn)和手動(dòng)布線(xiàn)相結(jié)合);</p><p>  (3) 能夠按要求建立元件庫(kù)和封裝庫(kù)。&l

2、t;/p><p>  2.原理圖繪制說(shuō)明:</p><p>  (1)練習(xí)學(xué)會(huì)使用PROTEL 99SE軟件。從中我們要學(xué)會(huì)使用PROTEL 99SE軟件來(lái)繪制任一原理圖以及任一PCB原理圖。首先是安裝這個(gè)軟件,在基本掌握這個(gè)軟件的使用說(shuō)明時(shí),開(kāi)始繪制原理圖。打開(kāi)PROTEL 99SE,新建一個(gè)PROTEL工程,在Document中分別新建一個(gè)原理圖,如圖:</p><p&

3、gt;<b>  圖 1新建原理圖</b></p><p>  (2)畫(huà)原理圖庫(kù),封裝,和封裝庫(kù)。根據(jù)任務(wù)書(shū)上的電路原理圖,去庫(kù)里找相對(duì)應(yīng)的元件對(duì)應(yīng)擺好。由于我這個(gè)電路原理圖比較特殊,有單片機(jī)數(shù)碼管器件,在庫(kù)存里不能找到,需要自己人工繪制且繪制起來(lái)比較麻煩,當(dāng)將這些元器件畫(huà)出來(lái)并在原理圖中擺好后,將它們?cè)僖来芜B接起來(lái),并用PageUp和PageDown鍵依次為放大、縮小鍵,可以調(diào)節(jié)電路圖的清

4、晰度,便于檢查。檢查無(wú)誤后便可以保存原理圖,則原理圖繪制完畢。</p><p>  自己畫(huà)40個(gè)腳的單片機(jī)首先要要去圖1中那樣建立一個(gè)自己的元件庫(kù),首先點(diǎn)擊SchematicLibrary,保存到指定的文件夾,然后先畫(huà)一個(gè)正方形,再加上需要的管腳數(shù),點(diǎn)擊管腳,修改屬性,然后加上元件名稱(chēng),保存,自己的元件庫(kù)就建立了起來(lái)。</p><p>  圖 2自己畫(huà)的40個(gè)腳單片機(jī)</p>

5、<p>  畫(huà)好原理圖后,需要對(duì)原理圖進(jìn)行封裝,封裝的方法是,點(diǎn)擊各個(gè)元器件,在Footorint欄中填寫(xiě)上援建的封裝號(hào),如元件數(shù)碼管是一個(gè)14個(gè)管腳的器件,查的他的封裝號(hào)是DIP14,即在Footorint欄中填寫(xiě)上DIP14,這樣一個(gè)元件就封裝完畢,把所有的元件封裝完畢。</p><p>  圖3 電路中的元件進(jìn)行封裝</p><p>  3、檢查原理圖的正確性和生成網(wǎng)絡(luò)表

6、</p><p>  原理圖封裝完畢后,需要檢查原理圖,我們的具體做法是,在PROTEL99界面中點(diǎn)擊Tools下的ERC,然后點(diǎn)擊確定,看是否自己畫(huà)的原理圖是不是合格的,有沒(méi)有錯(cuò)誤。</p><p><b>  圖4 檢查原理圖</b></p><p>  在確定自己畫(huà)的原理圖沒(méi)有錯(cuò)誤后,需要生成網(wǎng)絡(luò)表,生成網(wǎng)絡(luò)標(biāo)的辦法是在Design鍵中找

7、到CreateNetlist,點(diǎn)擊,就生成了自己所畫(huà)的正確的原理圖的網(wǎng)絡(luò)表。</p><p>  圖5 生成的部分網(wǎng)絡(luò)表</p><p>  4、印制PCB版圖繪制說(shuō)明:</p><p>  在繪制PCB原理圖之前,新建一個(gè)PCB Docment,新建PCB Docment,的操作如下圖:</p><p>  圖6 新建一個(gè)PCB Docme

8、nt,</p><p>  點(diǎn)擊菜單欄中的文件菜單,新建一個(gè)PCB Docment,導(dǎo)入網(wǎng)絡(luò)表,便會(huì)自動(dòng)生成PCB原理圖, 用粉色線(xiàn)將原理圖圈至框內(nèi),制成印制板邊框圖,給板布局,使板子既經(jīng)濟(jì)又美觀(guān)。然后點(diǎn)擊“自動(dòng)布線(xiàn)”,給板全部布線(xiàn)。但是由于部分原因我們?cè)趯?dǎo)入網(wǎng)絡(luò)表之后,有的元器件導(dǎo)線(xiàn),這個(gè)時(shí)候我們就要從新回到第一步,看自己話(huà)的原理圖是否完全正確,一般原理圖出現(xiàn)的問(wèn)題是我們畫(huà)導(dǎo)線(xiàn)時(shí),導(dǎo)線(xiàn)與元器件的接口沒(méi)有接好,后

9、導(dǎo)致我們生成的PCB圖中的元器件沒(méi)有導(dǎo)線(xiàn)相連,在仔細(xì)檢查我們的原理圖后,我們重新生成檢查后的原理圖的網(wǎng)絡(luò)表,然后我們?cè)谥貜?fù)建立PCB圖的步驟,,如果我們?cè)诖_定自己的原理圖正確,但是生成的PCB途中為部分元器件還是沒(méi)有導(dǎo)線(xiàn),這個(gè)時(shí)候就需要我們自己手動(dòng)布線(xiàn),手動(dòng)布線(xiàn)的方法是:點(diǎn)擊缺少線(xiàn)的元器件的管腳,彈出一個(gè)對(duì)話(huà)框,對(duì)話(huà)框彈出后點(diǎn)擊Advanced選項(xiàng),里面有Net選項(xiàng),對(duì)照自己的原理圖,看該元器件的管腳是與那個(gè)另外其他的元器件相連,在Ne

10、t中找到該元器件,確定后,導(dǎo)線(xiàn)就相連。導(dǎo)線(xiàn)連接完畢后就是手動(dòng)布局,首先確定PCB板的大小,我們一定要選擇一個(gè)合適的大小,太大浪費(fèi)板,太小,元件布局不開(kāi),自己手動(dòng)把各個(gè)元器件</p><p>  圖7 生成的PCB圖</p><p>  4.對(duì)所繪制電路進(jìn)行簡(jiǎn)要分析:</p><p>  該電路由單片機(jī)、數(shù)碼管器件、電阻、電容、蜂鳴器、無(wú)極性電容等基本元件組成,電路構(gòu)

11、造比較復(fù)雜,但是原理比較通俗易懂。制版圖中,同色線(xiàn)沒(méi)有相交叉,并且元件引腳均已連接正確,說(shuō)明電路圖連接準(zhǔn)確,可以生成制板。</p><p><b>  5.總結(jié):</b></p><p>  通過(guò)PROTEL 99SE軟件的課設(shè),我掌握了PROTEL 99SE軟件的應(yīng)用方法,加深了我對(duì)電路及電子信息工程專(zhuān)業(yè)的了解,也對(duì)PCB板的制作有了較深的印象,為以后在電子行業(yè)的發(fā)

12、展,奠定了一定的基礎(chǔ)。通過(guò)這次課設(shè)也我深刻地體會(huì)到身為一名專(zhuān)業(yè)設(shè)計(jì)人員自身應(yīng)該具備的嚴(yán)謹(jǐn)、細(xì)心、負(fù)責(zé)的工作態(tài)度和作風(fēng),為我將來(lái)在專(zhuān)業(yè)方面的發(fā)展打下堅(jiān)實(shí)的基礎(chǔ),但是在做的過(guò)程中我也遇到了許多困難,軟件運(yùn)用不熟悉,原理不太理解等,我及時(shí)的向同學(xué)和老師請(qǐng)教和答疑,去圖書(shū)館查找資料,上網(wǎng)搜索資料,最終克服了重重困難,完成了自己的課程設(shè)計(jì),在此過(guò)程中收獲很多,在今后的學(xué)習(xí)過(guò)程中我會(huì)更加努力,豐富充實(shí)自己的知識(shí),完成自己學(xué)習(xí)任務(wù),為以后的工作等打下

13、一個(gè)堅(jiān)實(shí)的基礎(chǔ)。</p><p><b>  6.參考文獻(xiàn)</b></p><p>  1、韓曉東,李勇江.Protel99SE電路設(shè)計(jì)實(shí)用教程.[M]北京:中國(guó)鐵道出版社,2007.</p><p>  2、邵建昂.Protel99教學(xué)實(shí)踐探討.實(shí)驗(yàn)室研究與探索,2007,26(2):100-105.</p><p>

14、  3、文艷等編著.Protel 99 SE電子電路設(shè)計(jì).[M]北京:機(jī)械工業(yè)出版社,2006.8</p><p>  4、老虎工作室 .Protel 99 SE多層次電路板設(shè)計(jì)與制作. [M]北京:人民郵電出版社,2007年. 2--18頁(yè)。</p><p>  5、莫力.《Protel 99SE電路設(shè)計(jì)》 北京:國(guó)防工業(yè)出版社,2005.01</p><p> 

15、 6、劉天旺主編 .Protel 99 SE電路設(shè)計(jì)應(yīng)用教程.[M]北京:電子工業(yè)出版社,2007.8</p><p>  附錄I 電路原理圖</p><p>  附錄II 印制板圖</p><p><b>  (二)軟件設(shè)計(jì)部分</b></p><p><b>  一、任務(wù)說(shuō)明:</b>

16、</p><p><b>  1.設(shè)計(jì)內(nèi)容:</b></p><p>  一班有m個(gè)女生,有n個(gè)男生(m不等于n),現(xiàn)要開(kāi)一個(gè)舞會(huì). 男女生分別編號(hào)坐在舞池的兩邊的椅子上.每曲開(kāi)始時(shí),依次從男生和女生中各出一人配對(duì)跳舞, 本曲沒(méi)成功配對(duì)者坐著等待下一曲找舞伴.</p><p>  請(qǐng)?jiān)O(shè)計(jì)一系統(tǒng)模擬動(dòng)態(tài)地顯示出上述過(guò)程,要求如下:</p&g

17、t;<p>  1) 輸出每曲配對(duì)情況</p><p>  2) 計(jì)算出任何一個(gè)男生(編號(hào)為X)和任意女生(編號(hào)為Y),在第K曲配對(duì)跳舞的 情況.至少求出K的兩個(gè)值.</p><p><b>  2.需求:</b></p><p>  本課題要對(duì)數(shù)目不等的男生女生跳舞進(jìn)行搭配,設(shè)計(jì)需要解決每一首曲子

18、 </p><p>  男生女生的搭配情況,要采用循環(huán)隊(duì)列的模式來(lái)解決,男生和女生各在兩個(gè)循環(huán)</p><p>  的隊(duì)列中,每首曲子開(kāi)始,便在兩個(gè)隊(duì)首各取一人成功配對(duì)跳舞,并進(jìn)入

19、隊(duì)尾, </p><p>  等待下一次配對(duì)。,通過(guò)對(duì)兩個(gè)循環(huán)隊(duì)列的輸出、入列操作,就可以簡(jiǎn)單實(shí)現(xiàn)要求,動(dòng)態(tài)的模擬出舞池兩邊那女生的搭配情況.</p><p>  例如:(4男5女情況) </p><p><b>  第一首:男1和女1</b></p><p><b>  第二首:男2和

20、女2</b></p><p><b>  第三首:男3和女3</b></p><p><b>  第四首:男4和女4</b></p><p><b>  第五首:男1和女5</b></p><p>  --------------------------</p

21、><p>  -------------------------</p><p>  -----------------------------</p><p><b>  二、設(shè)計(jì)過(guò)程</b></p><p><b>  1、文字說(shuō)明:</b></p><p>  要模擬動(dòng)態(tài)地

22、顯示出現(xiàn)題目中所要求的循環(huán),我們要先建立兩個(gè)循環(huán)隊(duì)列SqQueue boys和SqQueue girls。</p><p>  將男生、女生兩組人分別存入這兩個(gè)隊(duì)列。以實(shí)現(xiàn)他們的循環(huán)配對(duì)輸出。</p><p>  利用循環(huán)隊(duì)列的特性,將男女生分別進(jìn)行入隊(duì)列和出隊(duì)列操作,實(shí)現(xiàn)搭 配輸出。</p><p>  循環(huán)隊(duì)列的長(zhǎng)度分別設(shè)為男女生的個(gè)數(shù)。</p>

23、<p>  在計(jì)算機(jī)終端輸出的結(jié)果是:</p><p>  (1) 輸入數(shù)據(jù)   </p><p>  (2) 輸出每曲配對(duì)情況 </p><p>  (3) 輸出第K曲配對(duì)情況  </p><p><b>  (4) 退出</b></p><p>

24、<b>  2、程序流程圖:</b></p><p>  為實(shí)現(xiàn)上述功能和目的,要用到循環(huán)隊(duì)列的相關(guān)知識(shí),同時(shí),要定義一定的抽的數(shù)據(jù)類(lèi)型,主函數(shù)調(diào)用各個(gè)函數(shù)模塊</p><p>  1.各模塊函數(shù)介紹:</p><p>  1)class cirularQueue </p><p>  作用:定義一個(gè)一個(gè)循環(huán)隊(duì)列<

25、/p><p>  2)~cirularQueue() </p><p>  作用:定義析構(gòu)函數(shù),使對(duì)象在撤銷(xiāo)時(shí)釋放</p><p>  3)bool Is Full() </p><p>  作用:判斷隊(duì)列是否已滿(mǎn)</p><p>  4)bool IsEmpty() </p><

26、p>  作用:判斷隊(duì)列是否為空,用于出隊(duì)列前使用</p><p>  5)void push(T info) </p><p>  作用:入隊(duì)。每對(duì)舞伴跳完舞之后,做入隊(duì)處理,到達(dá)隊(duì)尾,等待下次跳舞。</p><p>  6)void Pop(T &info) </p><p>  作用:出隊(duì)。每取曲子響起時(shí)男生隊(duì)列和女生

27、隊(duì)列作出隊(duì)處理,兩人跳舞。</p><p>  7)void GetHead(T &info) </p><p>  作用:取隊(duì)首元素,對(duì)出隊(duì)的男女進(jìn)行識(shí)別。</p><p>  8)void Initqueue(cirularQueue<int>&,int);</p><p><b>  作用:初始化隊(duì)

28、列</b></p><p>  9)void display(int,int);</p><p>  作用:根據(jù)男生和女生的人數(shù)和曲目的數(shù)目,來(lái)判斷每曲歌的男女配對(duì)情況</p><p>  10)void charge(int,int);</p><p>  作用:判斷指定組合能否配對(duì)成功</p><p>

29、  2.本程序包含三個(gè)模塊:</p><p><b>  1)主程序模塊:</b></p><p>  void main()</p><p><b>  {</b></p><p><b>  初始化;</b></p><p><b>  d

30、o{</b></p><p><b>  接受命令;</b></p><p><b>  處理命令;</b></p><p>  }while(“命令”=”退出”) </p><p><b>  }</b></p><p>  2)、集合單元

31、模塊——實(shí)現(xiàn)集合的各個(gè)函數(shù)模塊</p><p>  3)、結(jié)點(diǎn)結(jié)構(gòu)單元模塊——定義集合的結(jié)點(diǎn)結(jié)構(gòu)</p><p>  3、主框圖和各子框圖模塊設(shè)計(jì)</p><p>  1) 主函數(shù)調(diào)用關(guān)系圖</p><p>  要模擬動(dòng)態(tài)地顯示出現(xiàn)題目中所要求的循環(huán),我們要先建立兩個(gè)循環(huán)隊(duì)列SqQueue boys和SqQueue girls。將男生、女生兩

32、組人分別存入這兩個(gè)隊(duì)列。以實(shí)現(xiàn)他們的循環(huán)配對(duì)輸出。利用循環(huán)隊(duì)列的特性,將男女生分別進(jìn)行入隊(duì)列和出隊(duì)列操作,實(shí)現(xiàn)搭 配輸出。</p><p>  圖1 主函數(shù)調(diào)用關(guān)系</p><p>  為了提高效率和其他原因,引入了初始化列表,因?yàn)槌跏蓟斜肀劝呀M合成員放在構(gòu)造函數(shù)中初始化,省略了調(diào)用組合成員對(duì)象的賦值構(gòu)造函數(shù),</p><p>  2)每曲配對(duì)函數(shù)調(diào)用關(guān)系圖voi

33、d display(int,int)</p><p><b>  否</b></p><p>  是 </p><p>  圖2 每曲配對(duì)函數(shù)調(diào)用關(guān)系圖</p><p>  4隊(duì)滿(mǎn)判斷bool IsFull()</p><p><b&

34、gt;  圖3 隊(duì)滿(mǎn)判斷圖</b></p><p>  5對(duì)空判斷原則bool IsEmpty()</p><p>  圖4 隊(duì)滿(mǎn)判斷空判斷圖</p><p>  6入隊(duì)流程void push(T info)</p><p><b>  圖5 入隊(duì)滿(mǎn)流程圖</b></p><p>  

35、7出隊(duì)流程void Pop(T &info)</p><p>  圖6 出入隊(duì)滿(mǎn)流程圖</p><p>  8.取隊(duì)首元素代碼void GetHead(T &info)</p><p>  三、調(diào)試過(guò)程及實(shí)驗(yàn)結(jié)果</p><p><b>  1、調(diào)試過(guò)程</b></p><p> 

36、 一開(kāi)始的調(diào)試中,做循環(huán)的時(shí)候無(wú)法是出來(lái)的人員回到原來(lái)的隊(duì)列中,后來(lái)詢(xún)問(wèn)老師后,老師幫助改正,隊(duì)員能回到了自己的隊(duì)列,但再次調(diào)適自己的程序的時(shí)候發(fā)現(xiàn),我輸入男生的人數(shù)和女生人數(shù)時(shí),程序總出現(xiàn)了輸入錯(cuò)誤,自己尋找了很長(zhǎng)時(shí)間沒(méi)有找到,找到同學(xué)幫忙,最后發(fā)現(xiàn)是在編寫(xiě)程序的時(shí)候自己把男生和女生的人數(shù)都提前確定了,,所以到后來(lái)自己輸入男生和女生的人數(shù)時(shí)總是錯(cuò)誤的,修改完成后最后程序運(yùn)行時(shí)還是有些錯(cuò)誤和警告,老是提示非法操作。在不斷改善程序后,程序

37、得以順利運(yùn)行。</p><p><b>  2、實(shí)驗(yàn)結(jié)果</b></p><p>  最后的運(yùn)行結(jié)果完成了軟件設(shè)計(jì)任務(wù)中的功能如下:</p><p>  1.完成了輸出每曲配對(duì)情況的功能</p><p>  2.完成了計(jì)算出任何一個(gè)男生(編號(hào)為X)和任意女生(編號(hào)為Y),在第K曲配對(duì)跳舞的情況.至少求出K的兩個(gè)值.的功能

38、。</p><p>  (1)程序最初的運(yùn)行結(jié)果(如圖所示)</p><p>  圖7 程序最初運(yùn)行圖</p><p> ?。?)各曲配對(duì)情況(如圖所示)</p><p>  圖8 各曲配對(duì)情況圖</p><p>  (3)根據(jù)男女編號(hào)查找對(duì)應(yīng)的曲數(shù)(能配對(duì))</p><p>  圖9 根據(jù)男女

39、編號(hào)查找對(duì)應(yīng)的曲數(shù)圖(能配對(duì))</p><p> ?。?)根據(jù)男女編號(hào)查找對(duì)應(yīng)的曲數(shù)(不能配對(duì))</p><p>  圖10根據(jù)男女編號(hào)查找對(duì)應(yīng)的曲數(shù)圖(不能配對(duì))</p><p><b>  四、結(jié)論</b></p><p>  這次課程設(shè)計(jì)及運(yùn)用了C++,程序開(kāi)始定義了class cirularQueue,其中有頭指

40、針,尾指針等。隨之定義了析構(gòu)函數(shù),釋放對(duì)象,然后進(jìn)行了隊(duì)列的基本操作,有隊(duì)列的申明,判斷隊(duì)空及隊(duì)滿(mǎn),出隊(duì),入隊(duì),其核心是display()函數(shù)和charge()函數(shù),其中display()用于對(duì)各位同學(xué)編號(hào)和每隊(duì)的輸出情況,charge()用于計(jì)算已編號(hào)的同學(xué)在第幾曲中進(jìn)行配對(duì)。循環(huán)隊(duì)列是一種環(huán)狀的隊(duì)列并且對(duì)頭元素指向隊(duì)尾元素, 運(yùn)用循環(huán)隊(duì)列的基本操作順利的解決學(xué)生舞曲搭配問(wèn)題,主要利用用循環(huán)隊(duì)列的環(huán)狀結(jié)構(gòu),循環(huán)地執(zhí)行出列入列操作并在出

41、隊(duì)列時(shí)進(jìn)行配對(duì)并輸出配對(duì)情況,而整個(gè)過(guò)程不需要不需要移動(dòng)元素使程序在空間復(fù)雜度上 降到最小,采用指針的移動(dòng)大大加快了程序的執(zhí)行效率。并且對(duì)輸入進(jìn)行了改進(jìn),以防止用戶(hù)隨意輸入時(shí)出現(xiàn)的各種意想不到的錯(cuò)誤。通過(guò)本次課設(shè)復(fù)習(xí)了C語(yǔ)言的知識(shí),對(duì)C++的運(yùn)用驚醒了進(jìn)一步的掌握,同時(shí)我對(duì)軟件的編程有了很深的了解,運(yùn)用方面有了長(zhǎng)足的進(jìn)步,但是在做的過(guò)程中我也遇到了許多困難,我及時(shí)的向同學(xué)和老師請(qǐng)教和答疑,去圖書(shū)館查找資料,上網(wǎng)搜索資料,最終克服了重

42、重困難,完成了自己的課程設(shè)計(jì),</p><p><b>  五、參考文獻(xiàn)</b></p><p>  1. 譚浩強(qiáng),《C程序設(shè)計(jì)》,北京,清華大學(xué)出版社,2005</p><p>  2. 劉彥明.《計(jì)算機(jī)軟件技術(shù)基礎(chǔ)教程》.西安,西安電子科技大學(xué)出版社,2001.2</p><p>  3. 王士元,《C高級(jí)實(shí)用程序設(shè)

43、計(jì)》,北京,清華大學(xué)出版社,1996</p><p>  4. 朱振元.《數(shù)據(jù)結(jié)構(gòu)(C++語(yǔ)言描述) 》 北京: 清華大學(xué)出版社,2007</p><p>  5. 鄭紅軍,《C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)實(shí)驗(yàn)與綜合練習(xí)》,武漢,武漢大學(xué)出版社,2011.1</p><p>  6. 姜仲秋,《C語(yǔ)言程序設(shè)計(jì)》,南京,南京大學(xué)出版社,1998.1</p><

44、p><b>  附錄I </b></p><p><b>  程序清單</b></p><p>  #include<iostream></p><p>  template <class T></p><p>  class cirularQueue //定義一個(gè)一

45、個(gè)循環(huán)隊(duì)列</p><p>  { private:</p><p>  int MaxSize;</p><p>  int front; //頭指針</p><p>  int rear; //尾指針</p><p><b>  T *data;</b></p>&

46、lt;p><b>  public:</b></p><p>  cirularQueue(int MaxLength)</p><p>  { MaxSize=MaxLength;</p><p>  front=rear=0;</p><p>  data=new T[MaxLength];</p>

47、;<p><b>  }</b></p><p>  ~cirularQueue() //定義析構(gòu)函數(shù),使對(duì)象在撤銷(xiāo)時(shí)釋放</p><p>  { front=rear=0;</p><p>  delete []data;</p><p><b>  }</b></p>

48、;<p>  void Initqueue() //隊(duì)列的申明</p><p>  { for(int i=0;i<maxSize-1;i++)</p><p><b>  push(i);</b></p><p><b>  }</b></p><p>  bool I

49、sFull() //判斷隊(duì)列是否已滿(mǎn) </p><p>  { if((rear+1)%MaxSize==front)</p><p>  return true;</p><p>  else return false; </p><p><b>  }</b></p><p&g

50、t;  bool IsEmpty() //判斷隊(duì)列是否為空</p><p>  { if(front==rear)</p><p>  return true;</p><p>  else return false;</p><p><b>  }</b></p><p>  void

51、 push(T info) //入隊(duì)</p><p>  { if(IsFull())</p><p>  { cout<<"錯(cuò)誤!隊(duì)列已滿(mǎn)!"<<endl;</p><p><b>  exit(-1);</b></p><p><b>  }<

52、;/b></p><p><b>  else</b></p><p>  { data[rear]=info;</p><p>  rear=(rear+1)%MaxSize;</p><p><b>  }</b></p><p><b>  }<

53、/b></p><p>  void Pop(T &info) //出隊(duì)</p><p>  { if(IsEmpty())</p><p>  { cout<<"錯(cuò)誤!隊(duì)列為空!"<<endl;</p><p><b>  exit(-1);</b>

54、</p><p><b>  }</b></p><p><b>  else</b></p><p>  { info=data[front];</p><p>  front=(front+1)%MaxSize;</p><p><b>  }</b&g

55、t;</p><p><b>  }</b></p><p>  void GetHead(T &info) //取隊(duì)首元素</p><p>  { if(IsEmpty())</p><p>  { cout<<"錯(cuò)誤!隊(duì)列為空!"<<endl;<

56、/p><p>  exit (-1);</p><p><b>  }</b></p><p><b>  else</b></p><p>  { info=data[front];</p><p><b>  }</b></p><

57、;p><b>  }</b></p><p><b>  }; </b></p><p>  int main() </p><p>  { cout<<"請(qǐng)分別輸入男生和女生的人數(shù):";</p><p>  cin>>

58、m>>n;</p><p>  display(m,n);</p><p>  int a=0,b=0; </p><p>  char quit='y'; </p><p>  while(quit!='n')</p><p>  { cout<<

59、"請(qǐng)輸入男生和女生的編號(hào):";</p><p>  cin>>a>>b;</p><p>  while((a>m)||(b>n)) </p><p>  { cout<<"輸入的編號(hào)過(guò)大,請(qǐng)重新輸入:";</p><p>  cin>>a

60、>>b;</p><p><b>  } </b></p><p>  charge(a,b);</p><p>  cout<<"是否繼續(xù)(是請(qǐng)輸入'y',否則請(qǐng)輸入'n'):";</p><p>  cin>>quit;<

61、/p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  void Initqueue(cirularQueue<int> &Q,int m) //初始化隊(duì)列<

62、;/p><p>  { for(int i=1;i<=m;i++)</p><p>  Q.push(i);</p><p><b>  }</b></p><p>  void display(int m,int n)</p><p>  { cirularQueue<int&

63、gt; man(m+1);</p><p>  cirularQueue<int> woman(n+1);</p><p>  Initqueue(man,m);</p><p>  Initqueue(woman,n);</p><p>  cout<<"請(qǐng)輸入曲目數(shù):";</p>

64、<p>  cin>>songnum;</p><p>  cout<<"每曲的配對(duì)情況為:"<<endl;</p><p>  for(int k=1;k<=songnum;k++)</p><p>  { int x=0,y=0; //男生和女生的編號(hào)</p><p

65、>  man.Pop(x); //男生按順序出隊(duì)跳舞</p><p>  woman.Pop(y); //女生按順序出隊(duì)跳舞</p><p>  cout<<"第"<<k<<"曲:\t"<<x<<"號(hào)男生<->"<<y<

66、<"號(hào)女生"<<endl; //他們?cè)谝黄鹛?lt;/p><p>  man.push(x); //跳完舞后男生再次進(jìn)入隊(duì)列等在下一次跳舞</p><p>  woman.push(y); //跳完舞后男生再次進(jìn)入隊(duì)列等在下一次跳舞</p><p><b>  }</b></p>&l

67、t;p><b>  }</b></p><p>  void charge(int a,int b)</p><p>  { int count=0; //定義舞曲計(jì)數(shù)以記錄他們能在第幾曲時(shí)在一起跳舞</p><p>  cirularQueue<int> man1(m+1);</p><p>  c

68、irularQueue<int> woman1(n+1);</p><p>  Initqueue(man1,m);</p><p>  Initqueue(woman1,n);</p><p>  while(count<=songnum)</p><p>  { int x, y;</p><p&g

69、t;<b>  count++;</b></p><p>  man1.Pop(x);</p><p>  woman1.Pop(y);</p><p>  man1.push(x);</p><p>  woman1.push(y);</p><p>  if((x==a)&&(

70、y==b)) </p><p>  { cout<<"第"<<count<<"首曲:\t"<<a<<"號(hào)男生<->"<<b<<"號(hào)女生"<<endl;</p><p><b>  brea

71、k;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //如果他們?cè)谶@個(gè)舞會(huì)上不能在一起跳舞,則輸出</p><p>  if(count==songnum+1)</p><p>  cout<&l

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論