/*
實作兩個動態矩陣的乘積(線性代數演算法)
*/
/*
錯誤可能在第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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/39419.html
標籤:基礎類
上一篇:求大神看看哪兒錯了,已經看一天了
