C 矩阵简单的计算器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++课程设计
---矩阵简单的计算器
一、设计目的
1、熟练掌握和运用c++编写程序代码的能力。
2、初步了解输入、建立并输出矩阵以及矩阵加法、减法、乘法、赋值和转置的算法设
计。
3、掌握基本的运算符重载函数的书写。
4、掌握静态数据成员和静态成员函数的具体声明和实现,体会它们的特殊作用。
5、掌握并体会动态内存分配的实际应用。
6、运用简单的循环实现简单的菜单程序。
二、总体设计
(1)UML图
三、详细设计
(1)类中的函数功能及实现
1、有参数的构造函数Matrix(int l,int w,int *n);
实现:
Matrix::Matrix(int l,int w,int *n)
{
length=l;
width=w;
num=new int[length*width];
int *p=num;
for(int i=0;i { *p++=*n++; } } 说明:为有参数的对象变量初始化。 2、无参构造函数(默认形式的构造函数)Matrix() 实现: Matrix::Matrix() { length=1; width=1; num=new int(1); } 说明:为无参数的对象进行初始化。 3、矩阵的拷贝构造函数Matrix::Matrix(Matrix &jz) 实现: Matrix::Matrix(Matrix &jz) { length=jz.length; width=jz.width; num=new int[length*width]; for(int i=0;i { *(num+i)=*(jz.num+i); } } 目的:用已存在的对象jz去初始化新建立的对象。 4、矩阵输入函数void Matrix::setnum(int l,int w) 实现: void Matrix::setnum(int l,int w) { length=l; width=w; if(l==0||w==0) { cout<<"矩阵行列不能为0"< return ; } else { delete[]num; num=NULL; num=new int[length*width]; //开辟length*width大小的空间 int *p=num; cout< for(int i=0;i { cout<<"请输入第"< for(int j=0;j { cout<<"第"< cin>>*(p+i*width+j); } } } } 说明: 矩阵输入函数主要读进去需要进行计算的原始矩阵,要注意的是矩阵的行列数不能为1,所以应该用选择语句排除一行一列的矩阵出现。首先用动态内存分配,给要录入的矩阵开辟需要录入的空间length*width。然后运用循环语句,将矩阵的每个元素录入。 5、加运算符重载函数Matrix Matrix::operator +(const Matrix &jz) 实现: Matrix Matrix::operator +(const Matrix &jz) { if(length==jz.length && width==jz.width) { flag=1; int *n=new int[length*width]; for(int i=0;i { *(n+i)=*(num+i)+*(jz.num+i); } Matrix temp(length,width,n); if(length*width>1) { delete[]n; } else { delete n; } return temp; } else { Matrix temp; flag=0; return temp; } } 说明: 加法运算符重载为类的成员函数,可以通过类的每个对象访问重载的运算符。 加法矩阵运算,要求两个矩阵的行列数分别相等。 6、减法运算符重载函数Matrix Matrix::operator -(const Matrix &jz) 实现: Matrix Matrix::operator -(const Matrix &jz) { if(length==jz.length && width==jz.width) { flag=1; int *n=new int[length*width]; for(int i=0;i { *(n+i)=*(num+i)-*(jz.num+i); } Matrix temp(length,width,n); if(length*width==1) { delete n; } else { delete []n; } return temp; } else { flag=0; Matrix temp; return temp; } } 说明: 减法运算符重载为类的成员函数,可以通过类的每个对象访问重载的运算符。 减法矩阵运算,也要求两个矩阵的行列数分别相等。 7、乘法运算符重载函数Matrix Matrix::operator*(const Matrix &jz) 实现: Matrix Matrix::operator*(const Matrix &jz) { if(width==jz.length) {