return output; }
Matrix operator-(Matrix &m1,Matrix &m2) {
Matrix m(m1.row,m1.col); int i,j;
for(i=0;i m.mx[i][j]=m1.mx[i][j]-m2.mx[i][j]; return m; } Matrix operator!(Matrix &m1) { int i,j; Matrix m(m1.col,m1.row); for(i=0;i m.mx[j][i]=m1.mx[i][j]; return m; } int main() { int n,m; int n1,n2; cout<<\加法与减法**********\ cout<<\请输入行数与列数:\ cin>>n>>m; Matrix m1(n,m); cout<<\输入第一个矩阵:\ cin>>m1; Matrix m2(n,m); cout<<\输入第二个矩阵:\ cin>>m2; Matrix m3(m1+m2); cout<<\两矩阵相加后:\ cout< cout<<\两矩阵相减后:\ Matrix m31(m1-m2); cout< cout<<\乘法*********\cout<<\请输入第一个矩阵的行与列:\cin>>n>>m; Matrix m4(n,m); cout<<\输入第一个矩阵:\cin>>m4; cout<<\请输入第二个矩阵的行与列:\cin>>n1>>n2; Matrix m5(n1,n2); cout<<\输入第二个矩阵:\cin>>m5; try{ Matrix m6(m4*m5); cout<<\两矩阵相乘后:\ cout< catch(int) { cout<<\第一个矩阵的列数不等于第二个矩阵的行数,所以不能相乘!\ } cout<<\转置**********\cout<<\请输入矩阵的行与列:\cin>>n>>m; Matrix m7(n,m); cout<<\输入一个矩阵:\cin>>m7; Matrix m8(!m7); cout<<\转置后:\cout< 稀疏矩阵的快速转置: #include public: int data[100][100]; int m,n; }; typedef int spmatrix[100][3]; void Init(matrix& mx);//稀疏矩阵初始化 void SpmDisplay(spmatrix spm);//显示三元组表示的矩阵 void Compressmatrix(matrix A,spmatrix B);//将稀疏矩阵转换为三元组矩阵 void Transpmatrix(spmatrix B,spmatrix& C);//将三元组矩阵转置 int main() { matrix mx; spmatrix spm1,spm2; //矩阵初始化 Init(mx); //矩阵转为三元组 Compressmatrix(mx,spm1); //显示三元组矩阵 SpmDisplay(spm1); //将三元组转置存放到spm2中 Transpmatrix(spm1,spm2); //显示转置后的三元组 SpmDisplay(spm2); return 0; } void Init(matrix& mx) { cout<<\矩阵的行数:\ cout<<\矩阵的列数:\ cout<<\输入矩阵:\ for(int i=0;i!=mx.m;i++) for(int j=0;j!=mx.n;j++) cin>>mx.data[i][j]; } void SpmDisplay(spmatrix spm) { for(int x=0;x<=spm[0][2];x++) for(int y=0;y<=2;y++) { static int z=0; if(0==z%3) cout< cout< cout< } void Compressmatrix(matrix A,spmatrix B) { int i,j,k=1; for(i=0;i B[k][0]=i; B[k][1]=j; B[k][2]=A.data[i][j]; k++; } B[0][0]=A.m; B[0][1]=A.n; B[0][2]=k-1; cout<<\压缩完成\} void Transpmatrix(spmatrix B,spmatrix& C) { int i,j,t,m,n; int x[100]; int y[100]; m=B[0][0];n=B[0][1];t=B[0][2]; C[0][0]=n;C[0][1]=m;C[0][2]=t; if(t>0) { for(i=0;i for(i=1;i<=t;i++) x[B[i][1]]=x[B[i][1]]+1; y[0]=1; for(i=1;i j=y[B[i][1]]; C[j][0]=B[i][1]; C[j][1]=B[i][0]; C[j][2]=B[i][2]; y[B[i][1]]=j+1; } } cout<<\变换完成\} 实验结果: