求恩人运行一下,看看哪儿错了吧?
/*
实现两个动态矩阵的乘积(线性代数算法)
*/
/*
错误可能在第55到70行,你可以运行试试看~
*/
#include<iostream>
using namespace std;
int main()
{
int m1,n1,m2,n2;
int **dm1, **dm2,**dm3;
cout << "Please input the first matrix size m1,n1:";
cin >> m1 >> n1;
dm1 = new int *[m1];//矩阵dm1,建立m1行
for (int i = 0; i < m1; i++) {//为m1行分配n1个空间
if ((dm1[i] = new int[n1]) == NULL)
exit(0);
}
cout << "请输入矩阵dm1:";
for (int i = 0; i < m1; i++) {
for (int j = 0; j < n1; j++)
cin >> dm1[i][j];
}
cout << "Please input the first matrix size m2,n2:";
cin >> m2 >> n2;
dm2 = new int *[m2];//矩阵dm2,建立m2行
for (int i = 0; i < m2; i++) {//为m2行分配n2个空间
if ((dm2[i] = new int[n2]) == NULL)
exit(0);
}
cout << "请输入矩阵dm2:";
for (int i = 0; i < m2; i++) {
for (int j = 0; j < n2; j++)
cin >> dm2[i][j];
}
if (n1 != m2) {
cout << "输入错误矩阵,请重新输入!!!";
}
else {
//新矩阵的行列为m1,n2
dm3 = new int *[m1];//矩阵dm3,建立m1行
for (int i = 0; i < m1; i++) {////为m1行分配n2个空间
if ((dm3[i] = new int[n2]) == NULL)
exit(0);
}
//录入dm3
for (int i = 0; i < m1 ; i++) {
for (int j = 0;j < n2; j++) {
for (int x = 0; x <m2; x++) {
dm3[i][j]+=dm1[i][x] * dm2[x][j];
}
}
}
for (int i = 0; i < m1; i++)
{
for (int j = 0; j < n2; j++)
{
cout << dm3[i][j]<<" ";
}
cout << "\n";
}
}
//释放空间
for (int i = 0; i < m1; i++) {
delete[]dm1[i];
}
delete[]dm1;
for (int i = 0; i < m2; i++) {
delete[]dm2[i];
}
delete[]dm2;
system("pause");
return 0;
}