- 47
- 0
- 约5.38千字
- 约 6页
- 2018-06-12 发布于贵州
- 举报
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;
您可能关注的文档
- 老年人口腔保健ppt课件.ppt
- 老年人颅脑外伤诊治原则ppt课件图文.ppt
- 老年保健PPT课件.ppt
- 老年养生保健ppt课件.ppt
- 老年保健课 睡眠问题ppt课件.ppt
- 老年康复概论ppt课件.ppt
- 老年房颤抗凝PPT课件.ppt
- 老年人常见疾病护理知识3PPT课件.pptx
- 老年抑郁症的诊疗进展 ppt课件.ppt
- 缺血性脑血管病诊治进展方案课件.ppt
- 全过程工程管理造价咨询工程监理项目服务方案投标方案(技术部分).doc
- 招标代理服务投标技术服务方案(技术方案).doc
- AI大模型与AIGC技术在公安领域的应用解决方案(99页 PPT).pptx
- 工业4.0智能制造数字工厂规划方案.pptx
- 树立社会主义核心价值观.docx
- 三年(2023-2025)中考历史真题分类汇编(全国)专题21 科技文化与社会生活(解析版).docx
- 2025年中考道德与法治真题完全解读(吉林卷).pdf
- 2025年中考道德与法治真题完全解读(安徽卷).pdf
- 三年(2023-2025)中考历史真题分类汇编(全国)专题14 人民解放战争(解析版).pdf
- 三年(2023-2025)广东中考历史真题分类汇编:专题03 中国近代史(八年级上册)(解析版).docx
最近下载
- 2026届四川省成都市石室中学化学高一第一学期期末综合测试试题含解析.doc
- 维修电工技师高级技师理论复习资料.pdf VIP
- 山东省菏泽市2024-2025学年高一下学期期末考试含答案(10科试卷).pdf
- 新员工岗前公司级安全考试(重庆轨道交通-B卷).docx VIP
- 装备修理质量管理课件.pptx VIP
- 螺杆机-海信螺杆式风冷热泵机组.pdf VIP
- 诱导性多功能干细胞研究行业深度调研及发展策略研究报告.docx
- 湖南省长沙市长郡中学2024-2025学年高一上学期期末考试语文试卷(含答案).pdf VIP
- 关于高三综评典型事例摘抄.docx VIP
- 装备修理技术与信息管理.pptx VIP
原创力文档

文档评论(0)