- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C课程设计---两个矩阵的加减法
C++课程设计 功能描述 通过运算符重载的方式定义了矩阵的加法、乘法、以及数乘,使得矩阵的符号运算更加的方便、简捷。 设计目的 熟练掌握程序设计语言的基础知识,进一步的理解面向对象编程的分析设计方法以及运算符重载,为以后进行更加复杂的编程打下坚实的基础。 二.系统总体设计 1.设计框架 由于矩阵的乘法要求前面的一个矩阵列数等于后面一个矩阵的行数,因此构造的矩阵可能会出现错误,使得无法进行运算。 三.详细的设计 1.类的设计 首先在.h头文件中构造一个matrix的类,将矩阵行数、列数以及一个指针设为私有,公有部分则声明相关的函数,采用运算符重载的方式重新定义了矩阵的加法、乘法以及数乘。同时声明构造函数,拷贝构造函数和析构函数。 2.算法设计与分析 由于两个矩阵的加减法是对应位置矩阵元素的相加减,因此只要通过指针将对应元素的相加减即可。矩阵的数乘的运算法则是将该实数与矩阵中的每一个元素相乘后所得的矩阵。所以通过指针和一个循环使得矩阵中的每一个元素与实数相乘即可。矩阵的乘法的运算法则就显得较特殊。新矩阵中的某个元素(矩阵的第行,第列)是通过前面的一个矩阵的第行每一个元素与后面一个相乘矩阵的对应第列中的每一个元素相乘再相加后所得的结果。 3.安全环境的分析 由于这里是动态的构造了一个矩阵,对于内存的分配也是动态的,因此很容易造成内存的泄漏。在构造matrix类的时候,采用new的方式动态的分配了内存,同时关键的是在类中同时声明了一个拷贝构造函数,使得在定义矩阵的加减乘的运算时将临时矩阵的值拷贝构造,使运算的值不至于因为临时矩阵的消失而造成结果的不存在而引发内存的泄漏。同时在析构函数里记得写delete,使用完内存后安全的释放。 四.源代码展示 #include stdafx.h #include iostream #includeiomanip using namespace std; class Matrix { public: Matrix(int m,int n, double *value=NULL) { rows=m; cols=n; p=new double[m*n]; if(value) {for (int i=0;irows;i++) for (int j=0;jcols;j++) p[i*cols+j]=value[i*cols+j]; } } ~Matrix () {delete []p;} Matrix(Matrix K) { cols=K.cols; rows=K.rows; p=new double[cols*rows]; for(int i=0;irows;i++) { for(int j=0;jcols;j++) { p[i*cols+j]=K.p[i*cols+j]; } } } friend Matrix operator +(Matrix c1,Matrix c2); friend Matrix operator *(Matrix c1,Matrix c2); friend Matrix operator *(Matrix c1,double a); friend ostream operator (ostream output,Matrix c2); private: int rows; int cols; double *p; }; Matrix operator +(Matrix c1,Matrix c2) { Matrix K(c1.rows,c2.cols); for (int i=0;iK.rows;i++) { for(int j=0;jK.cols;j++) { K.p[i*K.cols+j]=c1.p[i*c1.cols+j]+c2.p[i*c2.cols+j]; } } return K; } Matrix operator *(Matrix c1,Matrix c2) { Matrix K(c1.rows,c2.cols); for (int i=0;ic1.rows;i++) { for (int j=0;jc2.cols;j++) { double s=0; for (int k=0;kc1.cols;k++) { s=s+c1.p[i*c1.cols+k]*c2.p[k*c2.cols+j]; } K.p[i*K.cols+j]=s;
您可能关注的文档
最近下载
- 臀位剖宫产护理查房.pptx VIP
- 北京市通州区2024-2025学年高三上学期期中质量检测数学试卷2.docx
- 美食推荐微信小程序的设计与实现.docx VIP
- 冬季预防训练伤部队ppt.pptx VIP
- 提高患者腕带佩戴依从性PDCA.docx VIP
- 《工程勘察设计收费标准》2002年修订本完整.pdf VIP
- TZS 0680—2025《医疗机构实验室生物安全管理组织架构规范》(水印版).pdf VIP
- SANKEN三肯变频器samco-ns TEXC-NS-002(小容量)使用手册调试说明书.pdf
- 标准图集-05R502-燃气工程设计施工.pdf VIP
- 不靠谱梦想该劝阻吗辩论赛 正方辩词一辩、二辩、三辩、四辩发言稿.docx VIP
有哪些信誉好的足球投注网站
文档评论(0)