#include <iostream>
using namespace std;
#include <stdio.h>
/*
*
任意两个矩阵相乘
*
数组采用静态分配,暂定为小于100维的矩阵相乘!
*/
int main()
{
double a[100][100]={0};
double b[100][100]={0};
double res[100][100]={0};
int line1,col1,line2,col2;//矩阵的行和列
cout<<"请顺序输入您要相乘的矩阵的行数和列数:"<<endl;
cout<<"顺序:矩阵1的行数,列数;矩阵2的行数,列数。"<<endl;
cin>>line1>>col1>>line2>>col2;
if(line1>100||col1>100)
{
cout<<"输入的维数过大!"<<endl;
return 0;
}
if(line1==0||col1==0)
{
cout<<"矩阵不能为0维!"<<endl;
return 0;
}
if(line2!=col1)
{
cout<<"输入的两个矩阵无法相乘!"<<endl;
return 0;
}
cout<<"请输入待乘的矩阵a,b"<<endl;
cout<<"矩阵a"<<"*****"<<line1<<"行"<<col1<<"列:"<<endl;
//输入待乘矩阵a,b
for(int i=0;i<line1;i++)
for(int j=0;j<col1;j++)
cin>>a[i][j];
cout<<"您输入的矩阵a如下:"<<endl;
for(i=0;i<line1;i++)
{
for(int j=0;j<col1;j++)
cout<<a[i][j]<<' ';
cout<<endl;
}
cout<<"矩阵b"<<"*****"<<line2<<"行"<<col2<<"列:"<<endl;
for(i=0;i<line2;i++)
for(int j=0;j<col2;j++)
cin>>b[i][j];
cout<<"您输入的矩阵b如下:"<<endl;
for(i=0;i<line2;i++)
{
for(int j=0;j<col2;j++)
cout<<b[i][j]<<' ';
cout<<endl;
}
//输出结果
cout<<"相乘结果为"<<line1<<"行"<<col2<<"列"<<"的矩阵!"<<endl;
cout<<"计算结果如下:"<<endl;
for(i=0;i<line1;i++)
{
for(int j=0;j<col2;j++)
{
for(int k=0;k<col1;k++)
{
res[i][j]=res[i][j]+a[i][k]*b[k][j];
}
cout<<res[i][j]<<' ';
}
cout<<endl;
}
return 1;
}