矩阵的乘法 求答案!谢谢啦 !!
描述设矩阵inta[4][3],矩阵intb[3][5]。矩阵的数据由用户输入。输出新的矩阵c=a*b.输出格式:c00c01c02c03c04c10c11c12c13c...
描述
设矩阵int a[4][3],矩阵int b[3][5]。矩阵的数据由用户输入。输出新的矩阵c=a*b. 输出格式:
c00 c01 c02 c03 c04
c10 c11 c12 c13 c14
c20 c21 c22 c23 c24
c30 c31 c32 c33 c34
矩阵乘法的计算方法:
对于矩阵A[m][q]*B[q][n],
相乘的结果为矩阵C[m][n]且对于矩阵C中每一项都有
C[i][j] = A[i][0]*B[0][j] + A[i][1]*B[1][j] + ..... + A[i][q]*B[q][j]
注意:实际矩阵大小不一定是4*3和3*5,请仔细阅读下面的输入说明
关于输入
第一行为第一个矩阵的大小x1和y1(1<=x1<=100, 1<=y1<=100),
后面跟着x1行,每行有y1个整数,代表第一个矩阵;
接下来一行,为第二个矩阵的大小x2和y2(1<=x2<=100,1<=y2<=100,题目保证x2和y1相等),
后面跟着x2行,每行有y2个整数,代表第二个矩阵。
题目保证运算结果在int型表示范围内。
输入图示如下:
x1 y1
a00 a01 a02
a10 a11 a12
a20 a21 a22
a30 a31 a32
x2 y2
b00 b01 b02 b03 b04
b10 b11 b12 b13 b14
b20 b21 b22 b23 b24
关于输出
输出一共有x1行,每行包括空格分隔的y2个整数,代表乘积矩阵c。注意行末不要有空格
输出图示如下:
c00 c01 c02 c03 c04
c10 c11 c12 c13 c14
c20 c21 c22 c23 c24
c30 c31 c32 c33 c34
例子输入
4 3
1 2 3
4 5 6
7 8 9
10 11 12
3 5
7 8 9 10 11
4 5 6 7 8
1 2 3 4 5
例子输出
18 24 30 36 42
54 69 84 99 114
90 114 138 162 186
126 159 192 225 258
提示
注意行末不要有空格 展开
设矩阵int a[4][3],矩阵int b[3][5]。矩阵的数据由用户输入。输出新的矩阵c=a*b. 输出格式:
c00 c01 c02 c03 c04
c10 c11 c12 c13 c14
c20 c21 c22 c23 c24
c30 c31 c32 c33 c34
矩阵乘法的计算方法:
对于矩阵A[m][q]*B[q][n],
相乘的结果为矩阵C[m][n]且对于矩阵C中每一项都有
C[i][j] = A[i][0]*B[0][j] + A[i][1]*B[1][j] + ..... + A[i][q]*B[q][j]
注意:实际矩阵大小不一定是4*3和3*5,请仔细阅读下面的输入说明
关于输入
第一行为第一个矩阵的大小x1和y1(1<=x1<=100, 1<=y1<=100),
后面跟着x1行,每行有y1个整数,代表第一个矩阵;
接下来一行,为第二个矩阵的大小x2和y2(1<=x2<=100,1<=y2<=100,题目保证x2和y1相等),
后面跟着x2行,每行有y2个整数,代表第二个矩阵。
题目保证运算结果在int型表示范围内。
输入图示如下:
x1 y1
a00 a01 a02
a10 a11 a12
a20 a21 a22
a30 a31 a32
x2 y2
b00 b01 b02 b03 b04
b10 b11 b12 b13 b14
b20 b21 b22 b23 b24
关于输出
输出一共有x1行,每行包括空格分隔的y2个整数,代表乘积矩阵c。注意行末不要有空格
输出图示如下:
c00 c01 c02 c03 c04
c10 c11 c12 c13 c14
c20 c21 c22 c23 c24
c30 c31 c32 c33 c34
例子输入
4 3
1 2 3
4 5 6
7 8 9
10 11 12
3 5
7 8 9 10 11
4 5 6 7 8
1 2 3 4 5
例子输出
18 24 30 36 42
54 69 84 99 114
90 114 138 162 186
126 159 192 225 258
提示
注意行末不要有空格 展开
展开全部
#include <iomanip>
class Arr
{
public:
Arr(){x=0;y=0;p=NULL;}
~Arr()
{
for(int i=0;i<x;i++)
delete[] p[i];
delete[] p;
}
int getX();
int getY();
int **getP();
void inputArr(int x,int y);
private:
int x,y;
int **p;
};
void Arr::inputArr(int m,int n)
{
int i,j;
x=m;
y=n;
p=new int*[m];
for (i=0;i<m;i++)
p[i]=new int[n];
for (i=0;i<x;i++)
{
for(j=0;j<y;j++)
cin>>p[i][j];
}
}
int Arr::getX()
{
return x;
}
int Arr::getY()
{
return y;
}
int** Arr::getP()
{
return p;
}
int** multiArr(Arr a,Arr b)
{
int i,j,k;
int **a1,**b1,**c1;
c1=new int*[a.getX()];
for (i=0;i<a.getX();i++)
c1[i]=new int[b.getY()];
a1=a.getP();
b1=b.getP();
for (i=0;i<a.getX();i++)
{
for (j=0;j<b.getY();j++)
{
for (k=0;k<a.getY();k++)
{
c1[i][j]=a1[i][k]*b1[k][j];
}
}
}
return c1;
}
int main(int argc, char* argv[])
{
Arr a,b;
int **c;
int x1,y1,x2,y2,i;
cout<<"input the row and column of first array:"<<endl;
cin>>x1>>y1;
a.inputArr(x1,y1);
cout<<"input the row and column of second array:"<<endl;
cin>>x2>>y2;
b.inputArr(x2,y2);
if(a.getY()==b.getX())
{
c=new int*[a.getX()];
for (i=0;i<a.getX();i++)
c[i]=new int[b.getY()];
c=multiArr(a,b);
cout<<"the result is:"<<endl;
for (i=0;i<a.getX();i++)
{
for(int j=0;j<b.getY();j++)
cout<<setw(6)<<c[i][j];
cout<<endl;
}
}
else
cout<<"the two array don't multiplicate!"<<endl;
return 0;
}
可能有点小问题,不过不影响正常运行!
class Arr
{
public:
Arr(){x=0;y=0;p=NULL;}
~Arr()
{
for(int i=0;i<x;i++)
delete[] p[i];
delete[] p;
}
int getX();
int getY();
int **getP();
void inputArr(int x,int y);
private:
int x,y;
int **p;
};
void Arr::inputArr(int m,int n)
{
int i,j;
x=m;
y=n;
p=new int*[m];
for (i=0;i<m;i++)
p[i]=new int[n];
for (i=0;i<x;i++)
{
for(j=0;j<y;j++)
cin>>p[i][j];
}
}
int Arr::getX()
{
return x;
}
int Arr::getY()
{
return y;
}
int** Arr::getP()
{
return p;
}
int** multiArr(Arr a,Arr b)
{
int i,j,k;
int **a1,**b1,**c1;
c1=new int*[a.getX()];
for (i=0;i<a.getX();i++)
c1[i]=new int[b.getY()];
a1=a.getP();
b1=b.getP();
for (i=0;i<a.getX();i++)
{
for (j=0;j<b.getY();j++)
{
for (k=0;k<a.getY();k++)
{
c1[i][j]=a1[i][k]*b1[k][j];
}
}
}
return c1;
}
int main(int argc, char* argv[])
{
Arr a,b;
int **c;
int x1,y1,x2,y2,i;
cout<<"input the row and column of first array:"<<endl;
cin>>x1>>y1;
a.inputArr(x1,y1);
cout<<"input the row and column of second array:"<<endl;
cin>>x2>>y2;
b.inputArr(x2,y2);
if(a.getY()==b.getX())
{
c=new int*[a.getX()];
for (i=0;i<a.getX();i++)
c[i]=new int[b.getY()];
c=multiArr(a,b);
cout<<"the result is:"<<endl;
for (i=0;i<a.getX();i++)
{
for(int j=0;j<b.getY();j++)
cout<<setw(6)<<c[i][j];
cout<<endl;
}
}
else
cout<<"the two array don't multiplicate!"<<endl;
return 0;
}
可能有点小问题,不过不影响正常运行!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
富港检测技术(东莞)有限公司_
2024-04-02 广告
2024-04-02 广告
正弦振动多用于找出产品设计或包装设计的脆弱点。看在哪一个具体频率点响应最大(共振点);正弦振动在任一瞬间只包含一种频率的振动,而随机振动在任一瞬间包含频谱范围内的各种频率的振动。由于随机振动包含频谱内所有的频率,所以样品上的共振点会同时激发...
点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询