數(shù)據(jù)結構,旋轉數(shù)字方陣,課程設計報告_第1頁
數(shù)據(jù)結構,旋轉數(shù)字方陣,課程設計報告_第2頁
數(shù)據(jù)結構,旋轉數(shù)字方陣,課程設計報告_第3頁
數(shù)據(jù)結構,旋轉數(shù)字方陣,課程設計報告_第4頁
數(shù)據(jù)結構,旋轉數(shù)字方陣,課程設計報告_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課程設計題目數(shù)字旋轉方陣、問題描述設計一個能正確輸出 N X N (1=N=10 )數(shù)字旋轉方陣(如圖 1.1)116151413217242312318252211419202110578911615141321231141056?g圖1.15階旋轉方陣圖1.2逐層填數(shù),從最外層填起、基本要求(1) 設計數(shù)據(jù)結構存儲;(2) 設計算法完成任意 N (1=N=10 )階數(shù)字旋轉方陣;(3) 分析時間復雜度和空間復雜度;三、概要設計1. 數(shù)據(jù)結構的設計程序采取二維數(shù)組的存儲結構進行數(shù)字旋轉方陣的存儲,因為數(shù)字旋轉方陣也是一個平面圖,采用二維數(shù)組的存儲結構能更直觀反映方陣。2. 算法的設計每一層的

2、數(shù)字分作四個小組,每一組的數(shù)字個數(shù)為 N-1 ,通過設立一個標志來判斷轉換方向(如圖1.2) o算法結束的標志有兩種情況:一是N為1,則填入數(shù)字,結束;二是 N=0,直接結束。以上兩種分別對應奇數(shù)階數(shù)字方陣和偶數(shù)階數(shù)字方陣。3. 時間復雜度和空間復雜度數(shù)字旋轉方陣是每進行一步填入一個數(shù),所以時間復雜度為0(n*n);二維數(shù)組所占用的空間是在聲明時所分配固定的,所以的空間復雜度為0(100)四、詳細設計算法偽代碼:聲明二維數(shù)組a1010 , size為需建立的 方陣階數(shù),初始化i, j,num為11. 若size=0,則循環(huán)結束;2. 若 size=1,則使 aij=num,循環(huán)結 束;3. 填

3、寫區(qū)域A,重復操作size-1次aij=num ; i+ ; num+ ;4. 填寫區(qū)域B,重復操作size-1次aij=num ; j+ ; num+ ;5. 填寫區(qū)域C,重復操作size-1次aij=num ; i- ; num+ ;6. 填寫區(qū)域D,重復操作size-1次aij=num ; j- ; num+ ;7. i+ ; j+ ; size=size-2;返回第 1 步;8. 循環(huán)結束后,輸出數(shù)組a;這是填寫逆時針數(shù)字方陣的算法,填寫順時針方陣只需把順序 ABCD改為BADC即可為了方便程序的使用,為其增加了一個菜單,使用的是switch-case作為選擇結構,while 作循環(huán)判

4、斷開始返回菜單size=0 ?size=1 ?功能0 退岀系統(tǒng)ij=num;循環(huán)結束輸入方陣階數(shù)n(1=n=10)顯示菜單功能1建立數(shù)字旋轉方陣建立二維數(shù)組進入循環(huán)結束輸岀數(shù)組是J循環(huán)結束nl丿程序詳細的流程圖如右圖所示:ik填充區(qū)域Aaij=num; i+; num+; flag+;否ag=size- 1 ?1?是否填充區(qū)域CAij=num;曰否填充區(qū)域Daij=num; j-; num+;、J flag+; /填充區(qū)域Baij=num; j+; num+;、flag+; 丿flag=size-1 ?是 ”否num+; flag+;i+; j+;size=size-21?flag=size-

5、五、運行與調試1.菜單界面如右圖所示:*歡迎便用數(shù)字旋轉方陣系統(tǒng)*L_峯咅轡字旋轉方陣d jR Jj 示 5.?C2.測試數(shù)據(jù)和結果5階的數(shù)字旋轉方陣:逆時針數(shù)字旋轉方陣主11&1S1413217242312319251141?2&211056?9?頗時針數(shù)字旅轉方陣;1234$1617181?615242520?11232221O121110六、總結和心得在老師的教導和書本的指引下,了解程序的運行方法,掌握其核心要領,一步步進行思考、 編寫代碼。在填寫方陣部分,因為size不等于1或0的情況下填數(shù)的次數(shù)必然大于一,所以選用do-while這種先執(zhí)行后判斷的判斷語句。通過自己的思考和努力編寫出

6、這個小程序, 使我對數(shù)據(jù)結構的運用有更好的認識,掌握不同的結構,靈活運用。七、程序代碼#in elude using n amespace std;/逆時針數(shù)字旋轉方陣實現(xiàn) void NFan gZhe n(i nt n)int size=n;int flag=0;設置轉換方向標志int a1010;/ 設置二維數(shù)組int i=0,j=0,num=1;while(1)if(size=0)break;else if(size=1)aij=num;break;elsedo/區(qū)域Aaij=num;i+;nu m+; flag+;while(flagsize-1); flag=0;do/區(qū)域Baij=

7、num;j+;nu m+; flag+;while(flagsize-1); flag=0;do/區(qū)域Caij=num;i-;nu m+; flag+;while(flagsize-1); flag=0;do區(qū)域D aij=num;j-;nu m+;flag+; while(flagsize-1); flag=0;/內圈循環(huán)i+;j+;size=size-2;for(i=0;i n;i+)for(j=0;j n;j+)cout.width(4); coutaij; coute ndl;coute ndl;順時針數(shù)字旋轉方陣實現(xiàn)void SFan gZhe n(i nt n)int size=n

8、;int flag=0;設置轉換方向標志int a1010;/ 設置二維數(shù)組int i=0,j=0,num=1;while(1)if(size=0)break;else if(size=1)aij=num; break;elsedo區(qū)域Baij=num;j+;nu m+;flag+;while(flagsize-1);flag=0;do/區(qū)域Aaij=num;i+;nu m+; flag+;while(flagsize-1); flag=0;do/區(qū)域Daij=num;j-;nu m+; flag+;while(flagsize-1); flag=0;do/區(qū)域Caij=num;i-;nu m

9、+;flag+;while(flagsize-1);flag=0;/內圈循環(huán)i+;j+;size=size-2;for(i=0;i n; i+)for(j=0;j n;j+) cout.width(4); coutaij; coute ndl;coute ndl; int mai n()int n;int choice;int con itue=1;cout*歡迎使用數(shù)字旋轉方陣系統(tǒng)*endl;coute ndl;while(c on itue=1)cout1-建立N階數(shù)字旋轉方陣endl; cout0-退出系統(tǒng)endl;cout choice;switch(choice)case 0:con

溫馨提示

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

評論

0/150

提交評論