用C++设计矩阵类Matrix,实现指定m,n参数的函数(要分配数组空间),实现按位置(row,col)赋值函数,实现求转置函数 Transpose()进行行列对换
时间: 2023-05-11 08:03:51 浏览: 144
好的,我可以回答这个问题。以下是 Matrix 类的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int m; // 行数
int n; // 列数
double *data; // 数据
} Matrix;
// 初始化矩阵
void init_matrix(Matrix *mat, int m, int n) {
mat->m = m;
mat->n = n;
mat->data = (double *) malloc(m * n * sizeof(double));
}
// 按位置赋值
void set_matrix(Matrix *mat, int row, int col, double val) {
mat->data[row * mat->n + col] = val;
}
// 求转置
Matrix transpose(Matrix mat) {
Matrix res;
init_matrix(&res, mat.n, mat.m);
for (int i = 0; i < mat.m; i++) {
for (int j = 0; j < mat.n; j++) {
set_matrix(&res, j, i, mat.data[i * mat.n + j]);
}
}
return res;
}
// 测试代码
int main() {
Matrix mat;
init_matrix(&mat, 3, 2);
set_matrix(&mat, 0, 0, 1);
set_matrix(&mat, 0, 1, 2);
set_matrix(&mat, 1, 0, 3);
set_matrix(&mat, 1, 1, 4);
set_matrix(&mat, 2, 0, 5);
set_matrix(&mat, 2, 1, 6);
Matrix res = transpose(mat);
for (int i = 0; i < res.m; i++) {
for (int j = 0; j < res.n; j++) {
printf("%f ", res.data[i * res.n + j]);
}
printf("\n");
}
return 0;
}
```
以上就是 Matrix 类的代码实现,包括初始化矩阵、按位置赋值和求转置等功能。
阅读全文