C++语言设计矩阵类Matrix,实现指定m,n参数的函数(要分配数组空间),实现按位置(row,col)赋值函数,实现求转置函数 Transpose()进行行列对换
时间: 2023-05-12 07:03:47 浏览: 142
C++实现的矩阵类,用于支持各种矩阵运算
3星 · 编辑精心推荐
好的,以下是 Matrix 类的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int m; // 行数
int n; // 列数
double *data; // 数据
} Matrix;
// 初始化矩阵
Matrix *init_matrix(int m, int n) {
Matrix *mat = (Matrix *)malloc(sizeof(Matrix));
mat->m = m;
mat->n = n;
mat->data = (double *)malloc(sizeof(double) * m * n);
return mat;
}
// 释放矩阵内存
void free_matrix(Matrix *mat) {
free(mat->data);
free(mat);
}
// 获取矩阵元素
double get_element(Matrix *mat, int row, int col) {
return mat->data[row * mat->n + col];
}
// 设置矩阵元素
void set_element(Matrix *mat, int row, int col, double val) {
mat->data[row * mat->n + col] = val;
}
// 转置矩阵
Matrix *transpose(Matrix *mat) {
Matrix *res = init_matrix(mat->n, mat->m);
for (int i = 0; i < mat->m; i++) {
for (int j = 0; j < mat->n; j++) {
set_element(res, j, i, get_element(mat, i, j));
}
}
return res;
}
// 测试代码
int main() {
Matrix *mat = init_matrix(2, 3);
set_element(mat, 0, 0, 1);
set_element(mat, 0, 1, 2);
set_element(mat, 0, 2, 3);
set_element(mat, 1, 0, 4);
set_element(mat, 1, 1, 5);
set_element(mat, 1, 2, 6);
printf("Original matrix:\n");
for (int i = 0; i < mat->m; i++) {
for (int j = 0; j < mat->n; j++) {
printf("%f ", get_element(mat, i, j));
}
printf("\n");
}
Matrix *trans = transpose(mat);
printf("Transposed matrix:\n");
for (int i = 0; i < trans->m; i++) {
for (int j = 0; j < trans->n; j++) {
printf("%f ", get_element(trans, i, j));
}
printf("\n");
}
free_matrix(mat);
free_matrix(trans);
return 0;
}
```
希望这个代码能够满足您的需求。
阅读全文