设计一个类Matrix,用于对一整型8X8矩阵进行管理。要求:
(1)在生成对象时,能够自动为矩阵中的每个元素清零
(2)通过运算符重载,实现对两个矩阵的减法和乘法运算
(3)通过运算符重载,实现矩阵中主对角线上的元素是否全为零的判断
(4)实现按列为矩阵输入数据成员函数
(5)实现求矩阵中主对角线上元素的最小值的成员函数
(6)给出main()函数的定义,在函数体中合理的调用上述每一个函数
自己写的程序:(由于校验过于麻烦,个人改为了4x4数组)
/*
设计一个类Matrix,用于对一整型8X8矩阵进行管理。要求:
(1)在生成对象时,能够自动为矩阵中的每个元素清零
(2)通过运算符重载,实现对两个矩阵的减法和乘法运算
(3)通过运算符重载,实现矩阵中主对角线上的元素是否全为零的判断
(4)实现按列为矩阵输入数据成员函数
(5)实现求矩阵中主对角线上元素的最小值的成员函数
(6)给出main()函数的定义,在函数体中合理的调用上述每一个函数
*/
#include<iostream>
using namespace std;
#define H 4//矩阵的行
#define L 4//矩阵的列
class Matrix
{
int array[H][L];
public:
Matrix()
{
for(int i=0;i<H;i++)
for(int j=0;j<L;j++)
array[i][j]=0;
}
Matrix operator-(const Matrix &x)
{
Matrix a;
for(int i=0;i<H;i++)
for(int j=0;j<L;j++)
a.array[i][j]=array[i][j]-x.array[i][j];
return a;
}
Matrix operator*(const Matrix &x)
{
Matrix a;
for(int i=0;i<H;i++)
for(int j=0;j<L;j++)
for(int k=0;k<L;k++)
a.array[i][j]+=array[i][k]*x.array[k][j];
return a;
}
int operator!()
{
for(int i=0;i<H;i++)
{
if(array[i][i]==0)
return 1;
else
return 0;
}
}
void input()//按列为矩阵输入元素
{
cout<<"请按列输入矩阵的元素:"<<endl;
for(int i=0;i<L;i++)
for(int j=0;j<H;j++)
cin>>array[i][j];
}
void findmin()
{
int min=array[0][0];
for(int i=0;i<H;i++)
{
if(array[i][i]<min)
min=array[i][i];
}
cout<<"矩阵中主对角线上的最小元素为:"<<min<<endl;
}
void disp()
{
for(int i=0;i<H;i++)
{
for(int j=0;j<L;j++)
{
cout<<array[i][j]<<'\t';
if(j!=0&&j%(H-1)==0)
cout<<endl;
}
}
}
};
int main()
{
Matrix p;
Matrix array1;
array1.input();
Matrix array2;
array2.input();
cout<<"矩阵1和矩阵2相减:"<<endl;
p=array1-array2;
p.disp();
cout<<"矩阵1和矩阵2相乘:"<<endl;
p=array1*array2;
p.disp();
cout<<"矩阵1主对角线上的元素是否全为0?(1是,0不是)"<<!array1<<endl;
cout<<"矩阵2主对角线上的元素是否全为0?(1是,0不是)"<<!array2<<endl;
array1.findmin();
array2.findmin();
return 0;
}
/*
array1
0 1 2 3
1 0 3 2
2 3 0 1
3 2 1 0
array2
3 2 1 0
2 3 0 1
1 0 3 2
0 1 2 3
*/
课本上的程序和我写的差不多,我就不更新了…真不容易…