设计矩阵类(m×n); a) 实现指定 m ,n 参数的函数(要分配数组空间) b) 实现按位置(row,col)赋值函数。 c) 实现求转置函数 Transpose(); Transpose就是行列对换。并改为类的模板。
时间: 2023-06-13 13:08:35 浏览: 65
C语言矩阵相乘(动态数组,文件读写)
3星 · 编辑精心推荐
以下是矩阵类的实现代码:
```cpp
#include <iostream>
using namespace std;
template<class T>
class Matrix{
private:
T **matrix;
int row, col;
public:
Matrix(int m, int n){
row = m;
col = n;
matrix = new T*[row];
for(int i=0; i<row; i++){
matrix[i] = new T[col];
}
}
void setValue(int r, int c, T value){
matrix[r][c] = value;
}
T getValue(int r, int c){
return matrix[r][c];
}
Matrix<T> Transpose(){
Matrix<T> newMatrix(col, row);
for(int i=0; i<row; i++){
for(int j=0; j<col; j++){
newMatrix.setValue(j, i, matrix[i][j]);
}
}
return newMatrix;
}
~Matrix(){
for(int i=0; i<row; i++){
delete[] matrix[i];
}
delete[] matrix;
}
};
int main(){
Matrix<int> m(2,3);
m.setValue(0,0,1);
m.setValue(0,1,2);
m.setValue(0,2,3);
m.setValue(1,0,4);
m.setValue(1,1,5);
m.setValue(1,2,6);
Matrix<int> newMatrix = m.Transpose();
for(int i=0; i<newMatrix.row; i++){
for(int j=0; j<newMatrix.col; j++){
cout << newMatrix.getValue(i,j) << " ";
}
cout << endl;
}
return 0;
}
```
在这个例子中,我们使用了模板类来处理不同数据类型的矩阵。我们首先定义了一个矩阵类,这个类有两个私有成员:一个存放矩阵的二维数组和矩阵的行列数。我们使用构造函数来分配二维数组的空间,使用析构函数来释放空间。
我们实现了三个公有函数:一个按位置赋值函数setValue(),一个按位置取值函数getValue(),一个求转置的函数Transpose()。在Transpose()函数中,我们首先创建一个新的矩阵newMatrix,行列数与原矩阵相反。然后我们遍历原矩阵的每一个元素,将其赋值给新矩阵对应的位置。最后返回新矩阵。
在main()函数中,我们创建了一个2 x 3的矩阵m,并对其赋值。然后我们调用Transpose()函数得到一个新的矩阵newMatrix,并输出其值。
注意,这里只是一个简单的实现,实际应用中还需要考虑更多的情况,比如矩阵相加、相乘等。
阅读全文