假定有任意大小的m*k矩阵A和k*n矩阵B,用c++计算矩阵A和B的乘积C
时间: 2025-02-16 17:14:33 浏览: 41
在C++中,为了计算两个矩阵A(m * k)和B(k * n)的乘积C(m * n),你需要使用二维数组或者动态内存分配来存储矩阵,并遍历它们来完成元素级别的乘法。这里是一个简单的示例:
```cpp
#include <iostream>
using namespace std;
// 定义矩阵类 Matrix
class Matrix {
private:
int m, k;
double** data; // 存储矩阵数据
public:
Matrix(int _m, int _k) : m(_m), k(_k) {
data = new double*[m];
for (int i = 0; i < m; ++i)
data[i] = new double[k];
}
~Matrix() {
for (int i = 0; i < m; ++i)
delete[] data[i];
delete[] data;
}
// 计算矩阵乘法
void multiply(Matrix& B) {
if (k != B.m) {
cout << "Error: Incompatible matrix sizes." << endl;
return;
}
double* C_data = new double[m * n]; // 创建结果矩阵C的数据
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
double sum = 0;
for (int k = 0; k < k; ++k) { // 遍历列
sum += data[i][k] * B.data[k][j];
}
C_data[i * n + j] = sum;
}
}
// 将C_data转换为Matrix C
Matrix C(m, n);
C.data = C_data;
}
// 打印矩阵
void print() {
for (int i = 0; i < m; ++i) {
for (int j = 0; j < k; ++j)
cout << data[i][j] << " ";
cout << endl;
}
}
};
int main() {
int m, k, n;
cout << "Enter the dimensions of matrix A (m x k): ";
cin >> m >> k;
cout << "Enter the dimensions of matrix B (k x n): ";
cin >> k >> n; // 提醒用户输入的k应该是一样的
Matrix A(m, k), B(k, n);
// 输入矩阵A和B的数据
cout << "Enter elements of matrix A:\n";
A.print();
cout << "Enter elements of matrix B:\n";
B.print();
// 计算并打印乘积C
A.multiply(B);
cout << "\nResultant matrix C after multiplication:\n";
A.print();
return 0;
}
```
阅读全文
相关推荐

















