矩阵操作Word文件下载.docx

上传人:b****3 文档编号:15718168 上传时间:2022-11-15 格式:DOCX 页数:26 大小:187.55KB
下载 相关 举报
矩阵操作Word文件下载.docx_第1页
第1页 / 共26页
矩阵操作Word文件下载.docx_第2页
第2页 / 共26页
矩阵操作Word文件下载.docx_第3页
第3页 / 共26页
矩阵操作Word文件下载.docx_第4页
第4页 / 共26页
矩阵操作Word文件下载.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

矩阵操作Word文件下载.docx

《矩阵操作Word文件下载.docx》由会员分享,可在线阅读,更多相关《矩阵操作Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。

矩阵操作Word文件下载.docx

实验

环境

1.微型电子计算机(PC);

2.安装Windows2000以上操作系统,VisualC++6.0开发工具。

任务

要求

1.利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,注意材料收集与整理;

2.在第15周末之前完成预设计,并请指导教师审查,通过后方可进行下一步工作;

3.本课题主要实现矩阵的翻转、卷动和旋转;

要求输入操作的方向、行数或列数或角度,运行程序,显示操作结果。

4.结束后,及时提交设计报告(含纸质稿、电子稿),要求格式规范、内容完整、结论正确,正文字数不少于3000字(不含代码)。

工作进度计划

序号

起止日期

工作内容

1

2008.06.09~2008.06.10

在预设计的基础上,进一步查阅资料,完善设计方案,形成书面材料。

2

2008.06.10~2008.06.11

设计总体方案,构建、绘制流程框图,编写代码,上机调试。

3

2008.06.11~2008.06.13

测试程序,优化代码,增强功能,撰写设计报告。

4

2008.06.14~2008.06.14

提交软件代码、设计报告,参加答辩,根据教师反馈意见,修改、完善设计报告。

指导教师(签章):

年月日

摘要:

编写代码,实现矩阵的翻转功能、卷动功能和旋转功能。

运行程序后,随机生成一个元素为三位正整数的5×

5矩阵。

矩阵翻转,本课程设计只考虑沿中心轴翻转(或垂直翻转或水平翻转)。

矩阵翻转的实质是,矩阵的每行(或每列)元素进行倒序排放。

矩阵卷动涉及两个问题:

(1)卷动的方向(或左右卷动,或上下卷动);

(2)卷动幅度,如上下卷动行数,左右卷动列数。

矩阵卷动的实质是将某行或某列元素循环移位。

上下卷动时,是将每列元素循环移位,左右卷动时,是将每行元素循环移位,卷动方向决定是左移还是右移。

矩阵旋转(绕中心点)涉及两个方面:

(1)旋转方向,顺时针还是逆时针;

(2)旋转角度,如90°

、180°

、270°

、360°

等。

矩阵旋转的实质是数组元素的重新组合,对应交换元素值。

因此关键是某圈元素的旋转、交换。

 

关键词:

行数;

列数;

幅度;

角度;

翻转;

卷动;

旋转

目录

摘要2

1课题综述4

1.1课题的来源及意义4

1.2预期目标4

1.3面对的问题5

1.4需要解决的关键技术5

2系统分析5

2.1涉及的知识基础5

2.2解决问题的基本思路7

2.3总体方案8

2.4功能模块框图8

3系统设计9

3.1算法描述9

3.2实现方法9

3.3详细流程图9

4代码编写11

4.1矩阵翻转11

4.2矩阵卷动12

4.3矩阵旋转14

5程序调试15

6运行结果与测试15

6.1矩阵翻转15

6.2矩阵卷动16

6.3矩阵旋转16

6.4退出程序17

7总结与展望18

总结19

致谢20

参考文献21

附录22

1课题综述

矩阵的研究历史悠久,拉丁方阵和幻方在史前年代已有人研究。

作为解决线性方程的工具,矩阵也有不短的历史。

1693年,微积分的发现者之一戈特弗里德·

威廉·

莱布尼茨建立了行列式论(theoryofdeterminants)。

1750年,加布里尔·

克拉默其后又定下了克拉默法则。

1800年代,高斯和威廉·

若尔当建立了高斯—若尔当消去法。

1848年詹姆斯·

约瑟夫·

西尔维斯特首先创出matrix一词。

研究过矩阵论的著名数学家有凯莱、威廉·

卢云·

哈密顿、格拉斯曼、弗罗贝尼乌斯和冯·

诺伊曼。

1.1课题的来源及意义

矩阵就是由方程组的系数及常数所构成的方阵。

把用在解线性方程组上既方便,又直观。

例如对于方程组

A1X+B1Y+C1Z=D1

A2X+B2X+C2Z=D2

A3X+B3Y+C3Z=D3

来说,我们可以构成两个矩阵:

A1B1C1A1B1C1D1

A2B2C2A2B2C2D2

A3B3C3A3B3C3D3

因为这些数字是有规则地排列在一起,形状像矩形,所以数学家们称之为矩阵,通过矩阵的变化,就可以得出方程组的解来。

数学上,一个m×

n矩阵乃一m行n列的矩形阵列。

矩阵由数组成,或更一般的,由某环中元素组成。

矩阵常见于线性代数、线性规划、统计分析,以及组合数学等。

1.2预期目标

编写代码,实现矩阵翻转、卷动和旋转。

运行程序后,随机生成一个元素为三位正整数数的5×

5矩阵,并显示下面的参考界面:

选择一个菜单后,要求输入操作的方向、行数或列数或角度,输入后,显示操作结果。

1.3面对的问题

怎样在一个函数中实现矩阵垂直翻转和水平翻转?

怎样实现矩阵左右卷动,上下卷动和设置矩阵卷动幅度?

矩阵顺时针旋转和逆时针之间有什么样的联系,以及各旋转度数之间的联系?

1.4需要解决的关键技术

编写一个函数实现矩阵90°

旋转,然后多次调用这个函数实现矩阵的180°

转转。

逆时针旋转可以看作为“过度”旋转,如逆时针旋转90°

,可以认为是顺时针旋转270°

2系统分析

2.1涉及的知识基础

2.1.1if语句

if语句的基本形式可分为两种:

(1)if(表达式)语句

其执行过程是:

首先计算表达式的值,若不为0,条件判断为真,则执行()后面的语句,否则,if语句中止执行,即不执行()后面的语句。

(2)if(表达式)语句1

else语句2

首先计算表达式的值,若不为0,条件判断为真,则执行()后面的语句,否则执行语句2。

if语句中的任何一个子句可以是任意可执行语句,当然也可以是一条if语句,这种情况称为if语句嵌套。

当出现if语句的嵌套时,不管书写格式如何,else格式都将与它前面最靠近的未曾配对的if语句相配对,构成一条完整的if语句。

它的格式为:

if(表达式1)语句1;

elseif(表达式2)语句2;

……

elseif(表达式n)语句n;

else语句n+1;

2.1.2for语句

这种循环语句不仅用于循环次数已知的情况,还能用于循环次数预先不能确定只给出循环结束条件的情况下。

for语句的一般形式:

for(表达式1;

表达式2;

表达式3)

{

语句;

//循环体

}

其执行的过程有以下几个步骤:

第一步:

求解表达式1;

第二步:

求解表达式2,若其值为真,则执行for语句中指定的循环体语句,然后执行下面的第三步。

若为假,则结束循环,转到第五步;

第三步:

求解表达式3;

第四步:

转回上面第二步继续执行;

第五步:

循环结束,执行for语句后面的其他语句。

从执行流程来看,for语句属于先判断类型。

For语句中的三个表达式都是包含逗号表达式在内的任意表达式。

for语句中的三个表达式可部分或全部省略,但两个分号不能省略。

2.1.3数组

数组是一种顺序容器,是由但一类型元素组成的一个有序集合。

数组是一种组合类型,它是不能作为一个整体进行访问和处理的,只能按元素进行个别的访问和处理。

C++数组中的第一个元素的下标为0,而不是1,且下标表达方式是固定的。

数组不仅有一维数组,还有多维数组。

一维数组可对应教学中的向量,二维数组则对应矩阵,通常用一个二维数组来储存矩阵。

二维数组的横向称为行,纵向称为列。

定义二维数组的通用格式为:

《存储类型》类型数组名[行表达式][列表达式];

2.1.4break语句

Break语句只能用在switch语句和循环语句中,从break语句处跳出switch语句或循环语句,转去执行switch语句或循环语句之后的语句。

需要注意的是,在嵌套循环中,break语句中止的是其所在的循环语句,而并非所有的循环。

2.1.5goto语句

goto语句和标号语句一起使用,标号语句是用标识符标识的语句,它控制程序从goto语句所在的地方转移到标号语句处。

Goto语句会导致程序结构混乱,可读性降低,因此一般不提倡使用goto语句。

但在某些特定场合下,goto语句可能会比表现出其价值。

比如多层循环嵌套中,要从深层循环跳出所有的循环,如果用break语句,则不仅要使用多次,而且可读性较差,这时goto语句可以发挥作用。

2.1.6函数调用

调用一个函数之前必须对该函数进行说明。

函数调用由函数名和函数调用运算符()组成,()内有0个或多个逗号分隔的参数(称为实参)。

每一个参数是一个表达式,且参数的个数与参数的类型要与被调函数定义的参数(称为形参)个数和类型匹配。

当被调函数执行时,首先计算实参表达式,并将结果值传送给行参,然后执行函数体,返回的返回值被传送到调用函数。

如果函数调用后有返回值,调用表达是可以用在表达式中,而无参函数的调用是一个单独的语句。

2.2解决问题的基本思路

先将矩阵操作这个课题分为矩阵翻转、矩阵卷动、矩阵旋转三大块。

矩阵翻转是将沿中心轴(垂直中心轴、水平中心轴)对应的元素一一交换,所以先编写一个函数来实现矩阵翻转。

对于矩阵卷动,先分为四小块,向左卷动、向右卷动、向上卷动、向下卷动。

然后编写一个函数依次实现其功能,接着编写代码代码实现矩阵的卷动幅度。

矩阵旋转需要先另外编写一个矩阵90°

的旋转代码,接着再编写另一个函数实现矩阵顺时针旋转和逆时针旋转,在这个函数里多次调用矩阵90°

的旋转代码,实现其它度数的旋转。

最后编写一个主函数实现矩阵操作的各种功能。

2.3总体方案

编写六个函数,实现矩阵翻转、矩阵卷动、矩阵旋转这三种功能。

2.4功能模块框图

图2-4

3系统设计

3.1算法描述

矩阵翻转即沿中心轴对应元素的交换。

矩阵卷动即将某行或某列元素循环移位。

矩阵旋转即数组元素的重新组合,对应交换元素值。

3.2实现方法

矩阵翻转,如沿中心轴水平翻转:

先定义一个变量,然后将中心轴左边的元素值给这个变量,接着把中心轴右边的元素值给左边的元素,最后变量元素值给右边元素。

矩阵卷动,先考虑一维数组的循环位移问题:

如,已知inttemp[10],将其循环右移一位。

显然移位后,

temp[8]~temp[0]

依次存入

temp[9]~temp[1]

而原来的temp[9]则返回数组起始部位,存入temp[0]。

显然,矩阵卷动无非是多个一维数组循环移位,只要在外层加个大循环就解决了。

矩阵旋转,旋转时实质是数组元素的重新组合,对应交换元素值。

因此问题的关键是某圈元素的旋转、交换。

如5阶方阵,共3圈,实际只需考虑2圈。

3.3详细流程图

图3-3

4代码编写

4.1矩阵翻转

voidturn(ints[5][5])//翻转函数

intt,y;

cout<

<

"

请选择一种翻转方式(1:

水平翻转,2:

垂直翻转):

endl;

//选择

cin>

>

y;

c

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1