C 矩阵简单的计算器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

{

相关文档
最新文档