




已閱讀5頁,還剩2頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
/ / 選題二矩陣操作/ 一、矩陣翻轉/ 沿某中心軸翻轉,或垂直,或水平翻轉。翻轉的實質是,矩陣的每行(或每列)元素進行倒序排放。/ / 二、矩陣卷動/ 可以左右、上下卷動。如下圖:/ / 矩陣卷動涉及二個問題:/ (1)卷動方向,或左右卷動,或上下卷動。/ (2)卷動幅度T,如上下卷動行數,左右卷動列數。/ 卷動的實質是將某行或某列元素循環移位。上下卷動時,是將每列元素循環移位,左右卷動時是將每行元素循環移位,卷動方向決定是左移還是右移。/ 一維數組的循環移位問題:/ 如,已知int temp10,將其循環右移一位。/ 顯然, 移位后,/ temp8 temp0 / 依次存入/ temp9 temp1 / 而原來的temp9 則返回數組起始部位,存入temp0 。 / 那么,循環右移W位呢?循環左移W位呢?/ 了解了一維數組循環移位問題后,顯然,矩陣卷動無非是多個一維數組循環移位,只要在外層加個大循環就解決了。/ 三、矩陣旋轉/ 矩陣旋轉(繞中心點)涉及二個方面:/ (1)旋轉方向,順時針還是逆時針。/ (2)旋轉角度,如90o、180o、270o、360o等。/ 分析:/ (1)考慮旋轉方向、角度/ (2)此處僅考慮方陣情況,即矩陣行、列數相同。/ (3)考慮是奇次方陣還是偶次方陣。/ (4)旋轉時,實質是數組元素的重新組合,對應交換元素值。/ (5)設方陣有K圈,每圈操作過程相似。/ 因此,問題的關鍵是某圈元素的旋轉、交換。/ 如下圖。/ / / 考慮幾種特殊情況,如90,180 ,270 ,360 等。/ (1)其它角度都是90的整數倍。因此,設計時僅需要考慮90情況,其它情況只需重復操作若干次即可。以順時針旋轉為例,如需旋轉180 ,只需將旋轉90 操作連續執行兩次即能實現。/ (2)逆時針旋轉可以看作為過度旋轉,如逆時針90,可認為是順時針旋轉270 。/ 當然,也可設計新的交換規則。/ 四、設計要求/ 編寫代碼,實現矩陣的翻轉、卷動和旋轉。運行程序后,隨機生成一個元素為三位正整數的55矩陣,并顯現下面的參考界面:/ 矩陣操作/ =/ 1矩陣翻轉/ 2矩陣卷動/ 3矩陣旋轉/ 請選擇(1、2或3,0:退出):/ 選擇一個菜單后,要求輸入操作的方向、行數或列數或角度,輸入后,顯示操作結果。#include / 輸入輸出頭文件 #include /接收字符函數的頭文件 #include/setw()函數頭文件void print(int s55) /定義函數 for(int i=0;i5;i+)for(int j=0;j5;j+)cout sij; /輸出數組coutendl;void turn(int s55) /翻轉函數int t,y; /定義變量cout請選擇一種翻轉方式(1:水平翻轉,2:垂直翻轉):y;cout操作后的數組為:endl;if(y=1) /水平翻轉for(int i=0;i5;i+) for(int j=0;j2;j+)t=sij;sij=si4-j;si4-j=t;print(s);coutendl;if(y=2) /垂直翻轉for(int j=0;j5;j+)for(int i=0;i2;i+)t=sij;sij=s4-ij;s4-ij=t;print(s);coutendl;void roll(int s55) /卷動函數int t,m,n;cout請輸入卷動方向(1:向左卷動,2:向右卷動,3:向上卷動,4:向下卷動):m;cout請輸入卷動的幅度:n;cout操作后的數組為:endl;for(int k=0;kn;k+)if(m=1) /向左卷動for(int i=0;i5;i+)t=si0;for(int j=0;j4;j+)sij=sij+1;si4=t;if(m=2) /向右卷動for(int i=0;i0;j-)sij=sij-1;si0=t;if(m=3) /向上卷動for(int j=0;j5;j+)t=s0j;for(int i=0;i4;i+)sij=si+1j;s4j=t;if(m=4) /向下卷動for(int j=0;j0;i-)sij=si-1j;s0j=t;print(s);coutendl;void pc(int s55) /順時針90旋轉int b55;for(int i=0;i5;i+)for(int k=0;k5;k+)bik=sik;for(i=0;i5;i+)for(int k=0;k5;k+)sik=bk4-i;void eddy(int s55) /旋轉函數int m,n,r;cout請輸入旋轉方向(1:順時針旋轉,2:逆時針旋轉):r; cout請輸入要旋轉的角度(90,180,270,360):m;cout操作后的數組為:endl;if(r=1) /順時針旋轉m=360-m; /如逆時針旋轉90,可以認為是順時針旋轉270if(r=2) /逆時針旋轉m=m;if(m%90=0)n=m/90; /求出nfor(int w=0;wn;w+) /根據n來確定調用函數的次數pc(s); print(s);coutendl; void main()int n,x,a55;/定義5*5的二維數組char p;loop: coutsetw(29) *矩陣操作* endl;/輸出選擇界面 coutsetw(29) = endl; coutsetw(29) 1.矩陣翻轉 endl; coutsetw(29) 2.矩陣卷動 endl; coutsetw(29) 3.矩陣旋轉 endl; coutsetw(29) 4.退出 endl; coutsetw(29) 請選擇(1、2,3, 4):x;/輸入選擇變化方式 if(x=1)/矩陣翻轉for(int i=0;i5;i+)for(int k=0;k5;k+)aik=(int) (rand()%(999-100)+100;/產生隨機數cout原數組為:endl;print(a);/調用輸出函數turn(a);/調用翻轉函數goto loop;if(x=2)/矩陣卷動for(int i=0;i5;i+)for(int k=0;k5;k+)aik=(rand()%(999-100)+100; /產生隨機數cout原數組為:endl;print(a); /調用輸出函數roll(a);/調用矩陣卷動函數goto loop;if(x=3)/矩陣旋轉for(int i=0;i5;i+)for(int k=0;k5;k+)aik= (rand()%(999-100)+100; /產生隨機數cout原數組為:endl;print(a);/調用輸出函數eddy(a);/調用旋轉函數goto l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 重大稅務問題應急處理策略試題及答案
- 大學生理想信念教育的創新策略與實踐路徑
- (高清版)DB33∕T 2556-2022 商品二維碼符號放置指南
- 解鎖文化產業管理考試秘籍試題及答案
- 藥物信息咨詢服務試題及答案
- 行業數據:中國商用機器人吸塵器市場現狀研究分析與發展前景預測報告
- 資本預算試題及答案解析
- 富馬酸干燥設備烘干機-服務優-穩定性高-穩定可靠
- 甲方財務面試題及答案
- 跨學科知識整合策略圖書管理員考試試題及答案
- 山東省威海市乳山市銀灘高級中學2024-2025學年高一下學期4月月考地理試題(原卷版+解析版)
- 信息技術在商業中的應用研究試題及答案
- 2025建筑信息模型技術員(初級)技能鑒定精練考試題庫及答案
- 2024-2025學年七年級語文下學期期中模擬卷05
- 實施《中華人民共和國反外國制裁法》的規定
- 2025年中國儲能檢測認證行業市場運行態勢及發展趨勢預測報告-智研咨詢發布
- 湖南新高考教學教研聯盟暨長郡二十校聯盟2025屆高三年級第二次聯考物理試題及答案
- 診斷與評估課件 第十二節 資賦優異兒童特征及學習資料
- 襄陽市樊城區城市更新投資發展有限公司招聘考試真題2024
- 2025年湖南省中考數學模擬試卷(一)(原卷版+解析版)
- 大學生職業規劃學習通超星期末考試答案章節答案2024年
評論
0/150
提交評論