實(shí)驗(yàn)報(bào)告 馬踏棋盤

上傳人:cjc****537 文檔編號(hào):59714611 上傳時(shí)間:2022-03-04 格式:DOC 頁(yè)數(shù):8 大小:132.55KB
收藏 版權(quán)申訴 舉報(bào) 下載
實(shí)驗(yàn)報(bào)告 馬踏棋盤_第1頁(yè)
第1頁(yè) / 共8頁(yè)
實(shí)驗(yàn)報(bào)告 馬踏棋盤_第2頁(yè)
第2頁(yè) / 共8頁(yè)

本資源只提供2頁(yè)預(yù)覽,全部文檔請(qǐng)下載后查看!喜歡就下載吧,查找使用更方便

10 積分

下載資源

資源描述:

《實(shí)驗(yàn)報(bào)告 馬踏棋盤》由會(huì)員分享,可在線閱讀,更多相關(guān)《實(shí)驗(yàn)報(bào)告 馬踏棋盤(8頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、2.4題馬踏棋盤題目:設(shè)計(jì)一個(gè)國(guó)際象棋的馬踏棋盤的演示程序班級(jí):姓名:學(xué)號(hào):完成日期:1 需求分析(1)輸入的形式和輸入值的范圍:輸入馬的初始行坐標(biāo)X和列坐標(biāo)Y,X和Y的范圍都是1,8。(2)輸出形式:以數(shù)組下表的形式輸入,i為行標(biāo),j為列標(biāo),用空格符號(hào)隔開(kāi)。以棋盤形式輸出,每一格打印馬走的步數(shù),這種方式比較直觀(3)程序所能達(dá)到的功能:讓馬從任意起點(diǎn)出發(fā)都能夠遍歷整個(gè)8*8的棋盤。(4)測(cè)試數(shù)據(jù),包括正確輸入及輸出結(jié)果和含有錯(cuò)誤的輸入及其輸出結(jié)果。數(shù)據(jù)可以任定,只要1=x,y=8就可以了。正確的輸出結(jié)果為一個(gè)二維數(shù)組,每個(gè)元素的值表示馬行走的第幾步,若輸入有錯(cuò),則程序會(huì)顯示:“輸入有誤!請(qǐng)重

2、新輸入”并且要求用戶重新輸入數(shù)據(jù),直至輸入正確為止。2 概要設(shè)計(jì)(1) 、位置的存儲(chǔ)表示方式(2) typedefstruct intx; inty; intfrom;Point;(2) 、棧的存儲(chǔ)方式#defineSTACKSIZE70#defineSTACKINCREASE10typedefstructStack Point*top; Point*base;intstacksize;(1)、設(shè)定棧的抽象數(shù)據(jù)類型定義:ADTStack數(shù)據(jù)對(duì)象:D=ai|aiElemSet,i=1,2,n,n0 數(shù)據(jù)關(guān)系:R1=|ai-1,aiD,i=2,n 約定an端為棧頂,ai端為棧頂。 基本操作:Ini

3、tStack(&s)操作結(jié)果:構(gòu)造一個(gè)空棧s,DestroyStack(&s)初始條件:棧s已存在。 操作結(jié)果:棧s被銷毀。 ClearStack(&s)初始條件:棧s已存在。 操作結(jié)果:棧s清為空棧。 StackEmpty(&s)初始條件:棧s已存在。 操作結(jié)果:若棧s為空棧,則返回TRUE,否則返回FALSE。 StackLength(s); 初始條件:棧s存在。操作結(jié)果:返回s的元素個(gè)數(shù),即棧的長(zhǎng)度。GetTop(s,&e);初始條件:棧s已存在且非空。 操作結(jié)果:用e返回s的棧頂元素。Push(&s,e) 初始條件:棧s已存在。操作結(jié)果:插入元素e為新的棧頂元素。Pop(&s,&e)初

4、始條件:棧s存在且非空。操作結(jié)果:刪除棧頂元素,并用e返回。stackTraverse(s,visit() 初始條件:棧s存在且非空。操作結(jié)果:從棧底到棧頂依次對(duì)s的每個(gè)元素調(diào)用visit()。一旦visit()失敗, 則 操作失敗。ADTStack本程序包含模塊:1、 主程序模塊:voidmain()定義變量;接受命令;處理命令;退出;2、 起始坐標(biāo)函數(shù)模塊馬兒在棋盤上的起始位置;3、 探尋路徑函數(shù)模塊馬兒每個(gè)方向進(jìn)行嘗試,直到試完整個(gè)棋盤;4、 輸出路徑函數(shù)模塊輸出馬兒行走的路徑;3 詳細(xì)設(shè)計(jì)1.函數(shù)聲明Void InitLocation(int xi,intyi);/馬兒在棋盤上的起始位

5、置標(biāo)intTryPath(inti,intj);/馬兒每個(gè)方向進(jìn)行嘗試,直到試完整個(gè)棋盤voidDisplay();/輸出馬兒行走的路徑2.起始坐標(biāo)函數(shù)模塊voidInitLocation(intxi,intyi)intx,y;/定義棋盤的橫縱坐標(biāo)變量top+;/棧指針指向第一個(gè)棧首stacktop.i=xi;/將起始位置的橫坐標(biāo)進(jìn)棧stacktop.j=yi;/將起始位置的縱坐標(biāo)進(jìn)棧stacktop.director=-1;/將起始位置的嘗試方向賦初值boardxiyi=top+1;/標(biāo)記棋盤x=stacktop.i;/將起始位置的橫坐標(biāo)賦給棋盤的橫標(biāo)y=stacktop.j;/將起始位置的

6、縱坐標(biāo)賦給棋盤的縱坐標(biāo)if(TryPath(x,y)/調(diào)用馬兒探尋函數(shù),如果馬兒探尋整個(gè)棋盤返回1否則0Display();/輸出馬兒的行走路徑elseprintf(無(wú)解);3.探尋路徑函數(shù)模塊intTryPath(inti,intj)intfind,director,number,min;/定義幾個(gè)臨時(shí)變量inti1,j1,h,k,s;/定義幾個(gè)臨時(shí)變量inta8,b18,b28,d8;/定義幾個(gè)臨時(shí)數(shù)組while(top-1)/棧不空時(shí)循環(huán) for(h=0;h=0&i=0&j8)/如果找到下一位置for(k=0;k=0&i1=0&j18)/如果找到下一位置number+;/記錄條數(shù) ah=

7、number;/將條數(shù)存入數(shù)組a8中 for(h=0;h8;h+)/根據(jù)可行路徑條數(shù)小到大按下表排序放d8中 min=9;for(k=0;kak)min=ak;dh=k;/將下表存入數(shù)組d8中s=k; as=9;director=stacktop.director;if(top=63)/如果走完整個(gè)棋盤返回1return(1);find=0;/表示沒(méi)有找到下一個(gè)位置for(h=director+1;h=0&i=0&j8)/如果找到下一位置find=1;/表示找到下一個(gè)位置Break;if(find=1)/如果找到下一個(gè)位置進(jìn)棧stacktop.director=director;/存儲(chǔ)棧結(jié)點(diǎn)的

8、方向top+;/棧指針前移進(jìn)棧stacktop.i=i;stacktop.j=j;stacktop.director=-1;/重新初始化下一棧結(jié)點(diǎn)的嘗試方向boardij=top+1;/標(biāo)記棋盤 else/否則退棧 boardstacktop.istacktop.j=0;/清除棋盤的標(biāo)記top-;/棧指針前移退棧 return(0);4.輸出路徑函數(shù)模塊voidDisplay()inti,j;for(i=0;iN;i+)for(j=0;jN;j+)printf(t%d,boardij);/輸出馬兒在棋盤上走過(guò)的路徑printf(nn);printf(n);四、測(cè)試數(shù)據(jù)及測(cè)試結(jié)果測(cè)試數(shù)據(jù):x=2

9、,y=3測(cè)試結(jié)果如下:5 原程序代碼#include#defineMAXSIZE100#defineN8intboard88;/定義棋盤intHtry18=1,-1,-2,2,2,1,-1,-2;/*存儲(chǔ)馬各個(gè)出口位置相對(duì)當(dāng)前位置行下標(biāo)的*/intHtry28=2,-2,1,1,-1,-2,2,-1;/*存儲(chǔ)馬各個(gè)出口位置相對(duì)當(dāng)前位置列下標(biāo)的增量數(shù)組*/structStack/定義棧類型inti;/行坐標(biāo)intj;/列坐標(biāo)intdirector;/存儲(chǔ)方向stackMAXSIZE;/定義一個(gè)棧數(shù)組inttop=-1;/棧指針voidInitLocation(intxi,intyi);/馬兒在棋

10、盤上的起始位置坐標(biāo)intTryPath(inti,intj);/馬兒每個(gè)方向進(jìn)行嘗試,直到試完整個(gè)棋盤voidDisplay();/輸出馬兒行走的路徑voidInitLocation(intxi,intyi)intx,y;/定義棋盤的橫縱坐標(biāo)變量top+;/棧指針指向第一個(gè)棧首stacktop.i=xi;/將起始位置的橫坐標(biāo)進(jìn)棧stacktop.j=yi;/將起始位置的縱坐標(biāo)進(jìn)棧stacktop.director=-1;/將起始位置的嘗試方向賦初值boardxiyi=top+1;/標(biāo)記棋盤x=stacktop.i;/將起始位置的橫坐標(biāo)賦給棋盤的橫坐標(biāo)y=stacktop.j;/將起始位置的縱坐

11、標(biāo)賦給棋盤的縱坐標(biāo)if(TryPath(x,y)/調(diào)用馬兒探尋函數(shù),如果馬兒探尋整個(gè)棋盤返回1否則返回0Display();/輸出馬兒的行走路徑elseprintf(無(wú)解);intTryPath(inti,intj)intfind,director,number,min;/定義幾個(gè)臨時(shí)變量inti1,j1,h,k,s;/定義幾個(gè)臨時(shí)變量inta8,b18,b28,d8;/定義幾個(gè)臨時(shí)數(shù)組while(top-1)/棧不空時(shí)循環(huán)for(h=0;h=0&i=0&j8)/如果找到下一位置 for(k=0;k=0&i1=0&j18) /如果找到下一位置number+;/記錄條數(shù)ah=number;/將條

12、數(shù)存入數(shù)組a8中for(h=0;h8;h+)/根據(jù)可行路徑條數(shù)小到大按下表排序放入數(shù)組d8中min=9;for(k=0;kak) min=ak;dh=k;/將下表存入數(shù)組d8中s=k; as=9;director=stacktop.director;if(top=63)/如果走完整個(gè)棋盤返回1return(1);find=0;/表示沒(méi)有找到下一個(gè)位置for(h=director+1;h=0&i=0&j8)/如果找到下一位置 find=1;/表示找到下一個(gè)位置 break; if(find=1)/如果找到下一個(gè)位置進(jìn)棧 stacktop.director=director;/存儲(chǔ)棧結(jié)點(diǎn)的方向to

13、p+;/棧指針前移進(jìn)棧stacktop.i=i;stacktop.j=j;stacktop.director=-1;/重新初始化下一棧結(jié)點(diǎn)的嘗試方向boardij=top+1;/標(biāo)記棋盤else/否則退棧boardstacktop.istacktop.j=0;/清除棋盤的標(biāo)記top-;/棧指針前移退棧 return(0);voidDisplay() inti,j; for(i=0;iN;i+) for(j=0;jN;j+)printf(t%d,boardij);/輸出馬兒在棋盤上走過(guò)的路徑printf(nn); printf(n);intmain()inti,j;intx,y;for(i=0;iN;i+)/初始化棋盤for(j=0;jN;j+)boardij=0;for(;)printf(Pleaseinputimportpoint(1=x=8and1=y=1&x=1&y=8)break;printf(Yourinputisworng!n);printf(beginwith%dboard:nn,8*(x-1)+y);InitLocation(x-1,y-1);/調(diào)用起始坐標(biāo)函數(shù)

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!