# include & ltiomanip & gt
使用命名空間std
模板& lttypename T1,typename T2 >
void逆(T1*mat1,T2 *mat2,int a,int b);
模板& lttypename T1,typename T2 >
void multi(T1*mat1,T2*mat2,T2*result,int a,int b,int c);
模板& lttypename T & gt
void output(T*mat,char *s,int a,int b);
int main(){
int middle[6][3],result[6][4];
int matrix1[3][6]={8,10,12,23,1,3,5,7,9,2,4,6,34,45,56,2,4,6 };
int matrix2[3][4]={3,2,1,0,-1,-2,9,8,7,6,5,4 };
char * s 1 = " result ";
char * s2 = " middle
//inverse(matrix1,middle,6,3);
逆& ltint[6],int[3]& gt;(matrix1,中間,6,3);
//multi(middle,matrix2,result,6,3,4);
多& ltint[3],int[4]& gt;(中間,矩陣2,結果,6,3,4);
輸出(matrix1," matrix1 ",3,6);
輸出(中間,s2,6,3);
輸出(矩陣2,“矩陣2”,3,4);
輸出(結果,s1,6,4);
返回0;
}
模板& lttypename T1,typename T2 >
void inverse(t 1 * mat 1,T2*mat2,int a,int b){
int i,j;
for(I = 0;我& ltb;i++)
for(j = 0;j & lta;j++)
mat 2[j][I]= mat 1[I][j];
返回;
}
模板& lttypename T1,typename T2 >
void multi(T1*mat1,T2*mat2,T2*result,int a,int b,int c){
int i,j,k;
for(I = 0;我& lta;i++){
for(j = 0;j & ltc;j++){
結果[I][j]= 0;
for(k = 0;k & ltb;k++)
result[I][j]+= mat 1[I][k]* mat 2[k][j];
}
}
返回;
}
模板& lttypename T & gt
void output(T*mat,char*s,int a,int b){
int i,j;
cout & lt& lts & lt& ltendl
for(I = 0;我& lta;i++){
for(j = 0;j & ltb;j++)
cout & lt& ltsetw(6)& lt;& ltmat[I][j];
cout & lt& ltendl
}
返回;
}