資源描述:
《漢諾塔_課程設(shè)計(jì)論文》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、淮陰工學(xué)院C++程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告選題名稱:漢諾塔系(院):計(jì)算機(jī)工程系專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)(網(wǎng)絡(luò)工程方向)班級(jí):網(wǎng)絡(luò)1071姓名:孟永吉學(xué)號(hào):1071304115指導(dǎo)教師:戴峻峰學(xué)年學(xué)期:2007~2008學(xué)年第2學(xué)期2008年06月14日36設(shè)計(jì)任務(wù)書(shū)課題名稱漢諾塔設(shè)計(jì)目的1.調(diào)研并熟悉漢諾塔的基本功能、數(shù)據(jù)流程與工作規(guī)程;2.學(xué)習(xí)漢諾塔的非遞歸算法和基于VC++集成環(huán)境的編程技術(shù);3.通過(guò)實(shí)際編程加深對(duì)基礎(chǔ)知識(shí)的理解,提高實(shí)踐能力;4.學(xué)習(xí)開(kāi)發(fā)資料的收集與整理,學(xué)會(huì)撰寫(xiě)課程設(shè)計(jì)報(bào)告。實(shí)驗(yàn)環(huán)境1.微型電子計(jì)算機(jī)(PC);2
2、.安裝Windows2000以上操作系統(tǒng),VisualC++6.0開(kāi)發(fā)工具。任務(wù)要求1.利用課余時(shí)間去圖書(shū)館或上網(wǎng)查閱課題相關(guān)資料,深入理解課題含義及設(shè)計(jì)要求,注意材料收集與整理;2.在第15周末之前完成預(yù)設(shè)計(jì),并請(qǐng)指導(dǎo)教師審查,通過(guò)后方可進(jìn)行下一步工作;3.本課題主要實(shí)現(xiàn)用兩種方法,遞歸和非遞歸方法實(shí)現(xiàn)盤(pán)子的移動(dòng);要求輸入盤(pán)片數(shù)目,顯示移動(dòng)過(guò)程及結(jié)果。4.結(jié)束后,及時(shí)提交設(shè)計(jì)報(bào)告(含紙質(zhì)稿、電子稿),要求格式規(guī)范、內(nèi)容完整、結(jié)論正確,正文字?jǐn)?shù)不少于3000字(不含代碼)。工作進(jìn)度計(jì)劃序號(hào)起止日期工作內(nèi)容12008.06.09~2
3、008.06.10在預(yù)設(shè)計(jì)的基礎(chǔ)上,進(jìn)一步查閱資料,完善設(shè)計(jì)方案,形成書(shū)面材料。22008.06.10~2008.06.11設(shè)計(jì)總體方案,構(gòu)建、繪制流程框圖,編寫(xiě)代碼,上機(jī)調(diào)試。32008.06.11~2008.06.13測(cè)試程序,優(yōu)化代碼,增強(qiáng)功能,撰寫(xiě)設(shè)計(jì)報(bào)告。42008.06.14~2008.06.14提交軟件代碼、設(shè)計(jì)報(bào)告,參加答辯,根據(jù)教師反饋意見(jiàn),修改、完善設(shè)計(jì)報(bào)告。指導(dǎo)教師(簽章):年月日36摘要:有三個(gè)柱子A,B,C.A柱子上疊放有n個(gè)盤(pán)子,每個(gè)盤(pán)子都比它下面的盤(pán)子要小一點(diǎn),可以從上到下用1,2,...,n編號(hào)。要
4、求借助柱子C,把柱子A上的所有的盤(pán)子移動(dòng)到柱子B上。移動(dòng)條件為:1、一次只能移一個(gè)盤(pán)子;2、移動(dòng)過(guò)程中大盤(pán)子不能放在小盤(pán)子上,只能小盤(pán)子放在大盤(pán)子上;要求編寫(xiě)程序打印出移動(dòng)盤(pán)子的步驟。編寫(xiě)代碼,用遞歸解法和非遞歸解法解決盤(pán)子的移動(dòng)問(wèn)題對(duì)于“漢諾塔”問(wèn)題的解法,主要有:遞歸法和非遞歸法,而遞歸法是人們用了最多的,因?yàn)樗群?jiǎn)單又易懂。以下是我做的一些工作:(1)課題綜述(課題來(lái)源,意義,預(yù)期目標(biāo),面對(duì)的問(wèn)題,需要解決的關(guān)鍵技術(shù))。(2)需求(系統(tǒng))分析(知識(shí)基礎(chǔ),解題的基本思路,總體方案,功能模塊框圖)。(3)設(shè)計(jì)模塊和算法(算法描述
5、,實(shí)現(xiàn)方法,詳細(xì)流程圖)。(4)編輯代碼(主要模塊的代碼分析)。(5)收集參考資料(主要從圖書(shū)館和網(wǎng)上獲?。jP(guān)鍵詞:漢諾塔;遞歸思想;函數(shù)調(diào)用;非遞歸思想;基本控制結(jié)構(gòu);數(shù)組;指針36目錄1課題綜述41.1課題描述及任務(wù)要求41.2課題來(lái)源、意義51.3預(yù)期目標(biāo)51.4面對(duì)的問(wèn)題51.5需解決的關(guān)鍵技術(shù)62需求(系統(tǒng))分析62.1涉及的知識(shí)基礎(chǔ)62.2解決問(wèn)題的基本思路102.3總體方案103模塊及算法設(shè)計(jì)113.1算法描述113.2詳細(xì)流程圖154代碼編寫(xiě)185程序調(diào)試23總結(jié)26致謝28參考文獻(xiàn)30附錄31361課題綜述1.
6、1課題描述及任務(wù)要求有三個(gè)柱子A,B,C.A柱子上疊放有n個(gè)盤(pán)子,每個(gè)盤(pán)子都比它下面的盤(pán)子要小一點(diǎn),可以從上到下用1,2,...,n編號(hào)。要求借助柱子C,把柱子A上的所有的盤(pán)子移動(dòng)到柱子B上。移動(dòng)條件為:1、一次只能移一個(gè)盤(pán)子;2、移動(dòng)過(guò)程中大盤(pán)子不能放在小盤(pán)子上,只能小盤(pán)子放在大盤(pán)子上。要求編寫(xiě)程序打印出移動(dòng)盤(pán)子的步驟。圖1.1漢諾塔的初始模型設(shè)計(jì)要求:編寫(xiě)代碼,用兩種方法解決盤(pán)子的移動(dòng)。運(yùn)行程序后,顯現(xiàn)下面的參考界面:漢諾塔===============================1.遞歸解法2.非遞歸解法請(qǐng)選擇(1或2,
7、0:退出)圖1.2漢諾塔初始界面361.2課題來(lái)源、意義漢諾塔問(wèn)題(也被稱為梵塔問(wèn)題或河內(nèi)塔問(wèn)題)在幾乎任何一種計(jì)算機(jī)高級(jí)程序設(shè)計(jì)語(yǔ)言的書(shū)籍中,都用作解題的典型例子,因此已廣為人知。曾有筆者1980年在德國(guó)做訪問(wèn)學(xué)者時(shí),在一個(gè)德國(guó)朋友家中曾見(jiàn)過(guò)這種梵塔智力玩具,可見(jiàn)他在國(guó)外已深入到家庭之中。漢諾塔問(wèn)題起源于中東地區(qū)的一個(gè)古老的傳說(shuō):在梵城地下有一個(gè)僧侶的秘密組織,他們有3個(gè)大型的塔柱,左邊的塔柱上由大到小套這64個(gè)金盤(pán)。僧侶們的工作是要把這64個(gè)金盤(pán)從左邊塔柱轉(zhuǎn)移到右邊塔柱上去。但轉(zhuǎn)移過(guò)程有嚴(yán)格規(guī)定,即每次只能搬動(dòng)一只盤(pán)子;盤(pán)子只
8、能在3個(gè)塔柱上安放,不允許放地上去;在每個(gè)塔柱上,只允許把小盤(pán)子疊在大盤(pán)子上,而不允許大盤(pán)子壓在小盤(pán)子上。據(jù)傳說(shuō),僧侶們完成這個(gè)任務(wù)時(shí),世界的末日就來(lái)臨了。19世紀(jì)的法國(guó)大數(shù)學(xué)家魯卡曾經(jīng)研究過(guò)這個(gè)問(wèn)題,他正確地指出,要完成這個(gè)任務(wù),僧侶們搬動(dòng)金盤(pán)的