#include <string>
#include <iostream>
void deletearr2d(int** p, int rows)
{
int i;
for (i = 0; i < rows; i++)
{
delete(p[i]);
}
delete[]p;
}
using namespace std;
int main()
{
int m, n;
cout << "请输入矩阵A的行数:\n";
cin >> m ;
cout << "请输入矩阵A的列数:\n";
cin >> n;
cout << "请按行输入矩阵A:\n";
int** a = new int*[m];
for (int i = 0; i < m; i++)
a[i] = new int[n];
for (int i = 0; i < m; i++)
{
for (int k = 0; k < n; k++)
{
cout << "a[" << i+1 << "][" << k+1 << "] = ";
cin >> a[i][k];
}
}
cout << "矩阵A= \n";
for (int i = 0; i < m; i++)
{
for (int k = 0; k < n; k++)
cout << a[i][k] <<" ";
cout << endl;
}
int p, q;
cout << "请输入矩阵B的行数:\n";
cin >> p;
cout << "请输入矩阵B的列数:\n";
cin >> q;
cout << "请按行输入矩阵B:\n";
int** b = new int* [p];
for (int k = 0; k < p; k++)
b[k] = new int[q];
for (int k = 0; k < p; k++)
{
for (int j = 0; j < q; j++)
{
cout << "b[" << k+1 << "][" << j+1 << "] = ";
cin >> b[k][j];
}
}
cout << "矩阵B= \n";
for (int k = 0; k < p; k++)
{
for (int j = 0; j < q; j++)
cout << b[k][j] <<" ";
cout << endl;
}
if (n != p)
cout << "fail\n";
else
{
cout << "结果为:\n";
int** c = new int* [m]();
for (int i = 0; i < m; i++)
c[i] = new int[q]();
for (int i = 0; i < m; i++)
{
for (int j = 0; j < q; j++)
{
for (int k = 0; k < p; k++)
c[i][j] += (a[i][k] * b[k][j]);
cout << c[i][j]<<" ";
}
cout << endl;
}
deletearr2d(c, m);
}
deletearr2d(a, m);
deletearr2d(b, p);
}
自存矩阵乘法计算器
最新推荐文章于 2023-12-22 03:03:46 发布