C++ 求两矩阵的乘积 30
求矩阵的积a[4][3]*b[3][4],我的程序运行结果是各行是一样的,结果也不对,为什么,怎么改#include<iostream>usingnamespacestd...
求矩阵的积a[4][3]*b[3][4],我的程序运行结果是各行是一样的,结果也不对,为什么,怎么改
#include<iostream>
using namespace std;
float a[4][3],b[3][4],c[3][3];
int main()
{int i,j;
void mut();
cout<<"Please enter a[4][3]:"<<endl;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
cout<<"Please enter b[3][4]:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
cin>>b[i][j];
cout<<"a[4][3]*b[3][4]="<<endl;
mut();
for(i=0;i<3;i++){
{for(j=0;j<3;j++)
cout<<c[i][j]<<" ";}
cout<<endl;}
return 0;
}
void mut()
{int i,j,k;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
for(k=0;k<4;k++)
c[i][j]+=a[k][i]*b[j][k];}
。。。。此题要求调用函数 展开
#include<iostream>
using namespace std;
float a[4][3],b[3][4],c[3][3];
int main()
{int i,j;
void mut();
cout<<"Please enter a[4][3]:"<<endl;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
cout<<"Please enter b[3][4]:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
cin>>b[i][j];
cout<<"a[4][3]*b[3][4]="<<endl;
mut();
for(i=0;i<3;i++){
{for(j=0;j<3;j++)
cout<<c[i][j]<<" ";}
cout<<endl;}
return 0;
}
void mut()
{int i,j,k;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
for(k=0;k<4;k++)
c[i][j]+=a[k][i]*b[j][k];}
。。。。此题要求调用函数 展开
3个回答
展开全部
4*3 和 3*4 的矩阵相乘得到的事 4*4的矩阵
c数组定义的太小
完成乘法的时 循环的次数下脚标都不正确!
对应位置相乘求和使用你的方法要先把 c数组的各个元素初始化为0,或者设置临时变量。
#include<iostream>
using namespace std;
float a[4][3],b[3][4],c[4][4];
int main()
{int i,j;
void mut();
cout<<"Please enter a[4][3]:"<<endl;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
cout<<"Please enter b[3][4]:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
cin>>b[i][j];
cout<<"a[4][3]*b[3][4]="<<endl;
mut();
for(i=0;i<4;i++)
{
{
for(j=0;j<4;j++)
cout<<c[i][j]<<" ";
}
cout<<endl;}
return 0;
}
void mut()
{int i,j,k;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
float tem = 0;
for(k=0;k<3;k++)
tem+=a[i][k]*b[k][j];
c[i][j] = tem;
}
}
c数组定义的太小
完成乘法的时 循环的次数下脚标都不正确!
对应位置相乘求和使用你的方法要先把 c数组的各个元素初始化为0,或者设置临时变量。
#include<iostream>
using namespace std;
float a[4][3],b[3][4],c[4][4];
int main()
{int i,j;
void mut();
cout<<"Please enter a[4][3]:"<<endl;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
cout<<"Please enter b[3][4]:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
cin>>b[i][j];
cout<<"a[4][3]*b[3][4]="<<endl;
mut();
for(i=0;i<4;i++)
{
{
for(j=0;j<4;j++)
cout<<c[i][j]<<" ";
}
cout<<endl;}
return 0;
}
void mut()
{int i,j,k;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
float tem = 0;
for(k=0;k<3;k++)
tem+=a[i][k]*b[k][j];
c[i][j] = tem;
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c[i][j]先赋0值,另外函数调用不对
#include<iostream>
using namespace std;
float a[4][3],b[3][4],c[3][3];
int main()
{int i,j;
cout<<"Please enter a[4][3]:"<<endl;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
cout<<"Please enter b[3][4]:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
cin>>b[i][j];
cout<<"a[4][3]*b[3][4]="<<endl;
int k;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
c[i][j]=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
for(k=0;k<4;k++)
c[i][j]+=a[k][i]*b[j][k];
for(i=0;i<3;i++){
{for(j=0;j<3;j++)
cout<<c[i][j]<<" ";}
cout<<endl;}
return 0;
}
#include<iostream>
using namespace std;
float a[4][3],b[3][4],c[3][3];
int main()
{int i,j;
cout<<"Please enter a[4][3]:"<<endl;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
cout<<"Please enter b[3][4]:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
cin>>b[i][j];
cout<<"a[4][3]*b[3][4]="<<endl;
int k;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
c[i][j]=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
for(k=0;k<4;k++)
c[i][j]+=a[k][i]*b[j][k];
for(i=0;i<3;i++){
{for(j=0;j<3;j++)
cout<<c[i][j]<<" ";}
cout<<endl;}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主最好不要经常发帖求教这样的问题。学业要靠自己寒窗苦读。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询