我必须编写一个首先获取“ n”的程序; n是下一个要得到的数字。例如,如果n == 3;输入将等待获得3个数字。 (例如:2 3 4) 这些数字是我们矩阵的行和列。
样本输入:
3
4 8 10
3 5 4 2 2 1 3 4
3 5 3 3 5 2 4 1
5 2 5 3 3 5 4 2
1 5 5 1 2 4 2 5
1 3 3 5 1 4 3 5 5 3
1 3 1 5 4 5 1 2 3 5
2 2 2 5 2 2 5 1 5 1
4 1 3 5 5 3 1 3 1 4
1 5 4 3 3 3 2 1 4 2
5 1 3 4 1 3 5 3 2 2
4 3 1 3 3 1 1 4 4 1
1 1 1 4 4 5 4 5 1 5
这是输出:
47 58 46 105 73 83 64 72 78 75
58 73 60 109 77 82 60 69 89 72
75 68 69 124 72 87 88 87 99 72
55 54 48 108 72 87 80 70 75 76
所以我尝试并编写了代码,但是只有在我们有2个矩阵时,我才能解决该问题。
这是我的代码:
#include <iostream>
using namespace std;
void enterData(int firstMatrix[][10], int secondMatrix[][10], int rowFirst, int columnFirst, int rowSecond, int columnSecond);
void multiplyMatrices(int firstMatrix[][10], int secondMatrix[][10], int multResult[][10], int rowFirst, int columnFirst, int rowSecond, int columnSecond);
void display(int mult[][10], int rowFirst, int columnSecond);
int main()
{
int firstMatrix[10][10], secondMatrix[10][10], mult[10][10], rowFirst, columnFirst, rowSecond, columnSecond, i, j, k,n;
cin >> n;
cin >> rowFirst >> columnFirst;
cin >> columnSecond;
rowSecond = columnFirst;
while (columnFirst != rowSecond)
{
cin >> rowFirst >> columnFirst;
cin >> rowSecond >> columnSecond;
}
enterData(firstMatrix, secondMatrix, rowFirst, columnFirst, rowSecond, columnSecond);
multiplyMatrices(firstMatrix, secondMatrix, mult, rowFirst, columnFirst, rowSecond, columnSecond);
display(mult, rowFirst, columnSecond);
return 0;
}
void enterData(int firstMatrix[][10], int secondMatrix[][10], int rowFirst, int columnFirst, int rowSecond, int columnSecond)
{
int i, j;
for(i = 0; i < rowFirst; ++i)
{
for(j = 0; j < columnFirst; ++j)
{
cin >> firstMatrix[i][j];
}
}
for(i = 0; i < rowSecond; ++i)
{
for(j = 0; j < columnSecond; ++j)
{
cin >> secondMatrix[i][j];
}
}
}
void multiplyMatrices(int firstMatrix[][10], int secondMatrix[][10], int mult[][10], int rowFirst, int columnFirst, int rowSecond, int columnSecond)
{
int i, j, k;
for(i = 0; i < rowFirst; ++i)
{
for(j = 0; j < columnSecond; ++j)
{
mult[i][j] = 0;
}
}
for(i = 0; i < rowFirst; ++i)
{
for(j = 0; j < columnSecond; ++j)
{
for(k=0; k<columnFirst; ++k)
{
mult[i][j] += firstMatrix[i][k] * secondMatrix[k][j];
}
}
}
}
void display(int mult[][10], int rowFirst, int columnSecond)
{
int i, j;
for(i = 0; i < rowFirst; ++i)
{
for(j = 0; j < columnSecond; ++j)
{
cout << mult[i][j] << " ";
if(j == columnSecond - 1)
cout << endl;
}
}
}
有人可以帮我吗?
感谢<3