1、C+课程设计课程设计 1. 功能描述功能描述 通过运算符重载的方式定义了矩阵的加法、乘法、以 及数乘,使得矩阵的符号运算更加的方便、简捷。 2. 设计目的设计目的 熟练掌握程序设计语言的基础知识,进一步的理解 面向对象编程的分析设计方法以及运算符重载,为以后进行 更加复杂的编程打下坚实的基础。 二二系统总体设计系统总体设计 1.设计框架 由于矩阵的乘法要求前面的一个矩阵列数等于后面一个矩 阵的行数,因此构造的矩阵可能会出现错误,使得无法进行 运算。 三详细的设计三详细的设计 1.1.类的设计类的设计 首先在.h头文件中构造一个matrix的类,将矩阵行 出现错误,中断扫描 输入矩阵 判断矩阵是
2、否有错 求值 显示出错情况,等待用户修改 输出结果,并做记录, 等待下次输入 数、列数以及一个指针设为私有,公有部分则声明相关的函 数,采用运算符重载的方式重新定义了矩阵的加法、乘法以 及数乘。同时声明构造函数,拷贝构造函数和析构函数。 2.2.算法设计与分析算法设计与分析 由于两个矩阵的加减法是对应位置矩阵元素的相加减, 因此只要通过指针将对应元素的相加减即可。矩阵的数乘的 运算法则是将该实数与矩阵中的每一个元素相乘后所得的 矩阵。所以通过指针和一个循环使得矩阵中的每一个元素与 实数相乘即可。矩阵的乘法的运算法则就显得较特殊。新矩 阵中的某个元素a ij (矩阵的第i行,第j列)是通过前面的
3、 一个矩阵的第i行每一个元素与后面一个相乘矩阵的对应 第j列中的每一个元素相乘再相加后所得的结果。 3.3.安全环境的安全环境的分析分析 由于这里是动态的构造了一个矩阵,对于内存的分配也 是动态的,因此很容易造成内存的泄漏。在构造matrix类的 时候,采用new的方式动态的分配了内存,同时关键的是在 类中同时声明了一个拷贝构造函数,使得在定义矩阵的加减 乘的运算时将临时矩阵的值拷贝构造,使运算的值不至于因 为临时矩阵的消失而造成结果的不存在而引发内存的泄漏。 同时在析构函数里记得写delete,使用完内存后安全的释 放。 四四源代码展示源代码展示 #include “stdafx.h“ #i
4、nclude #include using namespace std; class Matrix public: Matrix(int m,int n, double *value=NULL) rows=m; cols=n; p=new doublem*n; if(value) for (int i=0;irows;i+) for (int j=0;jcols;j+) pi*cols+j=valuei*cols+j; Matrix () delete p; Matrix(Matrix rows=K.rows; p=new doublecols*rows; for(int i=0;irows;i+) for(int j=0;jcols;j+) pi*cols+j=K.pi*cols+j; friend Matrix operator +(Matrix friend Matrix operator *(Matrix friend Matrix operator *(Matrix