矩阵的全套操作.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
矩阵的全套操作

// // 选题二 矩阵操作 // 一、矩阵翻转 // 沿某中心轴翻转,或垂直,或水平翻转。翻转的实质是,矩阵的每行(或每列)元素进行倒序排放。 // // 二、矩阵卷动 // 可以左右、上下卷动。如下图: // // 矩阵卷动涉及二个问题: // (1)卷动方向,或左右卷动,或上下卷动。 // (2)卷动幅度T,如上下卷动行数,左右卷动列数。 // 卷动的实质是将某行或某列元素循环移位。上下卷动时,是将每列元素循环移位,左右卷动时是将每行元素循环移位,卷动方向决定是左移还是右移。 // 一维数组的循环移位问题: // 如,已知int temp[10],将其循环右移一位。 // 显然, 移位后, // temp[8] ~ temp[0] // 依次存入 // temp[9] ~ temp[1] // 而原来的temp[9] 则返回数组起始部位,存入temp[0] 。 // 那么,循环右移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 °。 // 当然,也可设计新的交换规则。 // 四、设计要求 // 编写代码,实现矩阵的翻转、卷动和旋转。运行程序后,随机生成一个元素为三位正整数的5×5矩阵,并显现下面的参考界面: // 矩阵操作 // ============ // 1.矩阵翻转 // 2.矩阵卷动 // 3.矩阵旋转 // 请选择(1、2或3,0:退出): // 选择一个菜单后,要求输入操作的方向、行数或列数或角度,输入后,显示操作结果。 #includeiostream.h // 输入输出头文件 #includestdlib.h //接收字符函数的头文件 #includeiomanip.h //setw()函数头文件 void print(int s[5][5]) //定义函数 { for(int i=0;i5;i++) { for(int j=0;j5;j++) cout s[i][j]; //输出数组 coutendl; } } void turn(int s[5][5]) //翻转函数 { int t,y; //定义变量 cout请选择一种翻转方式(1:水平翻转,2:垂直翻转):endl; //选择 ciny; cout操作后的数组为:endl; if(y==1) //水平翻转 { for(int i=0;i5;i++) for(int j=0;j2;j++) { t=s[i][j]; s[i][j]=s[i][4-j]; s[i][4-j]=t; } print(s); coutendl; } if(y==2) //垂直翻转 { for(int j=0;j5;j++) for(int i=0;i2;i++) { t=s[i][j]; s[i][j]=s[4-i][j]; s[4-i][j]=t; } print(s); coutendl; } } void roll(int s[5][5]) //卷动函数 { int t,m,n; cout请输入卷动方向(1:向左卷动,2:向右卷动,3:向上卷动,4:向下卷动):endl; cinm; cout请输入卷动的幅度:endl; cinn; cout操作后的数组为:endl; for(int k=0;kn;k++)

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档