矩阵的全套操作.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
// // 选题二 矩阵操作 // 一、矩阵翻转 // 沿某中心轴翻转,或垂直,或水平翻转。翻转的实质是,矩阵的每行(或每列)元素进行倒序排放。 // // 二、矩阵卷动 // 可以左右、上下卷动。如下图: // // 矩阵卷动涉及二个问题: // (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; cin

您可能关注的文档

文档评论(0)

152****1430 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档