用c++完成两个3✕3矩阵相乘的程序
时间: 2024-09-25 21:17:36 浏览: 18
在C++中,要完成两个3x3矩阵的乘法,你需要创建两个矩阵类,每个包含数据成员数组以及相关的操作方法,如构造函数、赋值运算符、和矩阵乘法运算符等。这里是一个简单的例子:
```cpp
#include <iostream>
using namespace std;
class Matrix3x3 {
public:
int data[9]; // 存储3x3矩阵的数据
// 构造函数,初始化所有元素为0
Matrix3x3() { for (int i = 0; i < 9; ++i) data[i] = 0; }
// 矩阵乘法函数
friend Matrix3x3 operator*(Matrix3x3& m1, Matrix3x3& m2);
private:
// 为了防止直接修改数据,禁止复制构造函数和赋值运算符
Matrix3x3(const Matrix3x3&) = delete;
Matrix3x3& operator=(const Matrix3x3&) = delete;
};
// 实现矩阵乘法运算
Matrix3x3 Matrix3x3::operator*(Matrix3x3& m2) {
Matrix3x3 result;
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
for (int k = 0; k < 3; ++k) {
result.data[i * 3 + j] += data[i * 3 + k] * m2.data[k * 3 + j];
}
}
}
return result;
}
int main() {
Matrix3x3 matrix1, matrix2, product;
// 初始化矩阵1和2
matrix1.data[0*3+0] = 1; matrix1.data[0*3+1] = 2; matrix1.data[0*3+2] = 3;
matrix1.data[1*3+0] = 4; matrix1.data[1*3+1] = 5; matrix1.data[1*3+2] = 6;
matrix1.data[2*3+0] = 7; matrix1.data[2*3+1] = 8; matrix1.data[2*3+2] = 9;
matrix2.data[0*3+0] = 10; matrix2.data[0*3+1] = 11; matrix2.data[0*3+2] = 12;
matrix2.data[1*3+0] = 13; matrix2.data[1*3+1] = 14; matrix2.data[1*3+2] = 15;
matrix2.data[2*3+0] = 16; matrix2.data[2*3+1] = 17; matrix2.data[2*3+2] = 18;
// 计算并打印结果
product = matrix1 * matrix2;
for (int i = 0; i < 9; ++i) {
cout << "product[" << i / 3 << "][" << i % 3 << "] = " << product.data[i] << endl;
}
return 0;
}
```