数组类的设计

mac2025-04-04  26

/*整型数组类的设计: (1)在设计对象时,能够自动为矩阵中每个元素清0 (2)通过运算符重载,实现对两个矩阵的减法和乘法运算 (3)通过对运算符的重载,实现矩阵中主对角线上的元素是否全为0的判断 (4)实现按列为矩阵输入数据的成员函数 (5)实现求矩阵中主对角线上元素最小值的成员函数 */ #include<iostream> using namespace std; #define R 4 class array { int x[R][R]; public: array() { for(int i=0;i<R;i++) for(int j=0;j<R;j++) x[i][j]=0; } array operator-(const array &s) { array y; for(int i=0;i<R;i++) for(int j=0;j<R;j++) y.x[i][j]=x[i][j]-s.x[i][j]; return y; } array operator*(const array &s) { array y; for(int i=0;i<R;i++) for(int j=0;j<R;j++) for(int k=0;k<R;k++) y.x[i][j]+=x[i][k]*s.x[k][j]; return y; } int operator!() { for(int i=0;i<R;i++) if(x[i][i]==0) return 1; return 0; } void input() { for(int i=0;i<R;i++) for(int j=0;j<R;j++) cin>>x[j][i]; } int findmin() { int min=x[0][0]; for(int i=0;i<R;i++) if(x[i][i]<min) min=x[i][i]; return min; } void disp() { for(int i=0;i<R;i++) for(int j=0;j<R;j++) { cout<<x[i][j]<<" "; if(j%3==0&&j!=0) cout<<endl; } } }; int main() { array p,q,r; p.input();q.input(); cout<<"p="<<endl;p.disp(); cout<<"q="<<endl;q.disp(); r=p-q; cout<<"'-'="<<endl;r.disp(); r=p*q; cout<<"'*'="<<endl;r.disp(); int min=p.findmin(); cout<<"p.min="<<min<<endl; } /* 0 1 2 3 1 2 3 0 1 0 3 2 2 1 0 3 2 3 0 1 3 0 1 2 3 2 1 0 0 3 2 1 */

最新回复(0)