/*
编程求两个矩阵相乘的结果。输入第一行是整数m,n,表示第一个矩阵式m行n列的;然后是一个m * n的矩阵。
再下一行的输入时整数p,q,表示下一个矩阵p行,q列的(n=p);然后就是一个p行q列的矩阵。
要求输出两个矩阵相乘的结果矩阵(1<m、n、p、q<=8).
P82页
2014年10月3日21:32:23
*/
#include <iostream>
using namespace std;
const int size = 10;
void init(int *, int *, int a[][size]);//初始化数组
void multi(int, int, int, int, int a[][size], int b[][size], int result[][size]);
void print(int, int, int result[][size]);
int main()
{
int m, n, p, q;
int a[size][size];
int b[size][size];
int result[size][size] = { 0 }; //将保存结果的数组初始化为0;
/*
int a[size][size] = { { 2, 4, 5 }, { 2, 1, 3 } }; //初始化数组
int b[size][size] = { { 1, 1, 1 }, { 2, 3, 2 }, { 0, 1, 4 } }; //初始化数组
m = 2;
n = 3;
p = q = 3;
*/
init(&m, &n, a);
init(&p, &q, b);
multi(m, n, p, q, a, b, result);
//print(m, n, a); 检查输入矩阵
//print(p, q, b);
print(m, q, result);
system("pause");
return 0;
}
void multi(int m, int n, int p, int q, int a[][size], int b[][size], int result[][size])
{
if (n == p) //第一个矩阵的列数与第二个矩阵的行数相等时,两个矩阵才能相乘;
for (int i = 0; i < m; i++) //a的行数
{
for (int j = 0; j < q; j++) //b的列数
{
for (int k = 0; k < n; k++) //a的列数
{
result[i][j] += a[i][k] * b[k][j];
}
}
}
else
printf("行数不匹配\n");
}
void print(int m, int q, int result[][size])
{
for (int i = 0; i < m; i++)
{
for (int j = 0; j < q; j++)
{
printf("%d\t", result[i][j]);
}
printf("\n");
}
}
void init(int *pm, int *pn, int a[][size])
{
cin >> *pm >> *pn;
for (int i = 0; i < *pm; i++)
{
for (int j = 0; j < *pn; j++)
{
cin >> a[i][j];
}
}
}
C++两个矩阵相乘
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 爱情是什么 爱情这种东西很多人或许都像我一样 是在初中的时候开始觉醒 小学三四年级 开始有了 异性 的觉悟之后 我...