37.建立一个类 Matrix,实现 m 行 k 列矩阵与 k 行 n 列矩阵的乘积。设 A 为 m 行 k 列的矩阵, B 为 k 行 n列的矩阵,则 C=A×B。
具体要求如下:
const int m=3;
const int k=4;
const int n=3;
- 私有数据成员
- int A[m][k]:存放 m 行 k 列矩阵。
- int B[k][n]:存放 k 行 n 列矩阵
- int (*C)[n]: 指向乘积矩阵
- 公有成员函数
- 构造函数:初始化成员数据。
- 析构函数:收回行指针。
- void process():求矩阵的乘积。
- void print();打印C矩阵
- 在主程序中对该类进行测试。
int a[m][k]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int b[k][n]={
{3,2,1},
{6,5,4},
{9,8,7},
{12,11,10}
};
输出:
#include<iostream>
#include<cstring>
using namespace std;
const int m = 3;
const int k = 4;
const int n = 3;
class Matrix{
int A[m][k],B[k][n],(*C)[n];
public:
Matrix(int a[m][k],int b[k][n]){
for(int i=0;i<m;i++){
for(int j=0;j<k;j++){
A[i][j]=a[i][j];
}
}
for(int i=0;i<k;i++){
for(int j=0;j<n;j++){
B[i][j]=b[i][j];
}
}
C = new int[m][n];
}
void process(){
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
C[i][j] = 0;
for(int h=0;h<k;h++){
C[i][j]+=A[i][h]*B[h][j];
}
}
}
}
void print(){
cout<<"A:"<<endl;
for(int i=0;i<m;i++){
for(int j=0;j<k;j++){
cout<<A[i][j]<<'\t';
}
cout<<endl;
}
cout<<"B:"<<endl;
for(int i=0;i<k;i++){
for(int j=0;j<n;j++){
cout<<B[i][j]<<'\t';
}
cout<<endl;
}
cout<<"C:"<<endl;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cout<<C[i][j]<<'\t';
}
cout<<endl;
}
}
~Matrix(){
if(C)delete[]C;
}
};
int main(){
int a[m][k]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int b[k][n]={
{3,2,1},
{6,5,4},
{9,8,7},
{12,11,10}
};
Matrix test(a,b);
test.process();
test.print();
return 0;
}
版权声明:本文为xskukuku原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。