《2023年矩阵运算实验报告.docx》由会员分享,可在线阅读,更多相关《2023年矩阵运算实验报告.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验报告一-矩阵运算.实验目的。1 .通过实践加强对程序设计语言课程知识点的理解和掌握,培养对课程知识综合 运用能力、实际分析问题能力及编程能力,养成良好的编程习惯。2 .通过实践进一步领略程序设计的特点和应用,提高运用C+语言以及面向对 象知识解决实际问题的能力。3 .通过实践掌握用C+语言编写面向对象的实用程序的设计方法,对面向对象方 法和思想增长感性的结识;.学会运用C+程序设计语言编写出一些短小、可靠的Windows实用程序,切实 提高面向对象的程序设计能力。为后续的相关课程的学习打下基础。二.实验规定。1 .学会建立模板类;.实现矩阵的“加”、“减”、“乘”、“数乘”、“转置”;2
2、.动态内存分派并用随机数填充;.注意“加”、“减”、“乘”要进行条件的判断;三.设计思绪。)else if (m r2. GetState0 = 1) (M f (op2=NULL)。(。m_resu 1 t =请先输入矩阵!” ;)e 1 se(o mat r ix c=rot a t e(*op2);a m_resu 1 t=/,matri x 2 转置”;_resu 1 t += rn ;。3n_r e sul t +=c. my_show();。)else(omjesul t=请选择一个矩阵! ;)Upda t e D a ta (FALS E );)void CMyView: :On
3、CHECK r 1 ()Upd a t e D a ta (TRU E );om_r2. Se t Check(0 );U p d a teData (FA L SE);void CMyView: : 0 n C HECK r 2 ()(U p date Data (TRUE);m_r 1 . SetC h eck ( 0 );p da t eDat a (FALSE)六 .实验心得与编程收获。这个程序是相对简朴一些的,但在编写的过程中我仍然感觉收获很多.一方面是 合理运用一维数组,运用它来进行矩阵的相关运算,并且最后运用数组来输出矩阵, 这也加强了我运用CSt ring的能力.然后在制作界面
4、方面使我更加得心应手, 可以快速完毕界面及相关的属性设立.最后尚有动态生成矩阵方面也帮我复习了 从前的知识.七 .总结展望与参考书目。7.1 总结展望尽管这次的矩阵并不完善,只能作一些简朴的运算,但是我想矩阵在此后无论学 习还是工作中应当都会经常碰到,这是一个比较基础的知识,通过这次的编程过程, 我对于矩阵的理解加深了,同时我了解到了比如矩阵与一维数组之间的互相转化 等知识,我想这对此后一定会很有帮助。此后我也一定会更加努力的去把握。7.2 参考书目1) vis u al C+ MFC编程实例 周靖主编 清华大学出版社2)进一步浅出MFC候俊杰编VC+ +进一步详解孙鑫编3.1 算法基本流程1
5、)获取用户输入的矩阵的行数和列数,动态生成一个一维数组2)运用随机数生成数组成员,并运用两个循环输出数组,使其符合矩阵的格式3)矩阵2同矩阵1的解决方法4)通过两个矩阵的行数和列数比较来判断能否进行加减乘等运算,如不能,输出相关信息5)如可以进行计算,则运用数组进行相应运算,并按照对的格式输出6)通过改变一维数组中元素的顺序来实现转置并输出3. 2算法流程图随机创建 矩阵型里楚鎏乘数乘以数改变顺序组各元素1_ 七二输出一(加减乘 判断行列伫输出错误信是否符合息是进行计算人四.基本界面。S3无标独-矩阵1。1回I区J五.关键代码。5.1关键类的声明class C M a tri x c 1 as
6、s(public:Mat r ixcl a s s ()int m_R ow = 0 ; 行int m_Col = 0; / / 列Mn_pEleme n t s = NULL; /一维数组);v i rtual CM a t r ixcla s s ()。delete 口 m_pE 1 e m e nts;0)public:int m_ R o w;oint m_Co 1 ;*int * m_pEl e ment s ;);5.2关键函数代码voi d CMyView: OnCHECKad d ()(om_ n ums. S et C h eck (0);m_ c ombi n e . S
7、e tC h e ck ( 0 );m subtr i ct. SetChec k (0)void CMyV i ew:: 0 n CHECK s ub t rict ()(m_add. SetCheck ( 0 );m_ c ombine. S etC h eck (0);m num s . S etCheck (0)void C MyView: : 0 n CHEC K combine ()m_ a cl d . S etCheck ( 0 );am nums. SetC h eck ( 0 );m_su b trict. Se t Check (0);)void CMyView: :On
8、 C HECK n ums ()(am_add. Se t C he c k(0);oni_com b ine. S etChe c k ( 0 );_su b t rict. Set C hoc k ( 0 ); )voi d CMyVi e w:0 n BU T TONcompu t e ()(oUpda t eDa t a (T RUE);/ TODO: Add your c ontro 1 not i f i c at ion h a ndl e r co d e herei f (m_a d cl. G e tState()=l)6 (。i f (op 1 - ima x ! =op
9、 2 ima x | |o p 1 jm a x!= o p2- jma x | | opl=NUL L | | o p2=NULL)(。 m_r e su 1 t二行数列数不等无法相加! ;oelse必田 a trix c (opl im a x, opl-jm a x);3 opl +*op2;冈11 re s u lt=/,m a trixl+matrix2 om r esul t + =rn;3m_res u lt+=c. my_show();el s e i f (m_su b t r i c t . Ge t Sta t e () = 1 )0 if ( o pl ima x !=
10、o p 2-ima x | opl-jmax! = op2-jm a x | | o p 1=NULL| |op2=NULL)aom resul t = 行数列数不等无法相减!不0)e Ise。ma t r i x c( o p 1 -im a x , opl- j ma x );c=* o p 1 -* o p2;om_r e sul t = m a trixl-matrix2 ; om re s u lt+= rn ;o m resu 1 t+=c. my s h ow();)Is e i f (m_combine. GetSt a t e()=l)i f (o p 1 jm a x!=o
11、p2- i max I | o p 1=NU L L | | o p 2 =NULL)。r esul t =以上无法相乘!;)else。(。 mat r i x c (opl-im a x , o p 2 -jm a x );c= (*opl)* ( *op2);0m_r e s u 1 t 二ma t r i xl * matrix 2 ;a m_r e sult+=*rn,z;。 m resu 1 t+=c. m y _ s how();clse i f (m_nums. Ge t Stat e () = = 1)(ooif(op2=NULL)ga m_r e su 1 t二运算不出结果!
12、”;gelse。(mii a t r ix c ( o p2- i ma x , op 2 - jma x );c =m k*(* o p2);o m result=k*matrix2;m_ r esult+= r n ;om_result + = c . m y _s h ow();else。m_res u lt=请先选定一个算法! ” ;)Upda t eData (FALSE);)void CMyVicw: :0n BUTTONro t ate ()(U pdateData(TRU E);if (m_rl. GetStateO = 1 )(gi f (opl=NULL)a (=m_r e s u 1请先输入矩阵! ;ooo els e (oinat r ix c= r o t a te(*opl);ooom res u lt=,matrixl 转置;网i r esul t + = rn”;m_re s ult+=c. my_ s how();00