c++使用二重指针实现矩阵的储存释放和乘法
2017-05-28 21:41
501 查看
c++使用二重指针实现矩阵的储存释放和乘法
#include<iostream> using namespace std; //新建一个矩阵 double **allocMatrix(int n) { double **matrix; matrix = new double * ; for (int i = 0; i < n; i++) { matrix[i] = new double ; } for (int i = 0; i<n; i++) for (int j = 0; j<n; j++) { cin >> matrix[i][j]; } return matrix; } //释放一个矩阵 void releaseMatrix(double **m, int n) { for (int i = 0; i<n; i++) delete[] m[i]; delete[] m; } //输出一个矩阵 void printMatrix(double **m, int n) { for (int x = 0; x < n; x++) { for (int y = 0; y < n; y++) { cout << m[x][y]<<" "; } cout << endl; } } //实现两个矩阵的乘法 double **multiple(double **m1, double**m2, int n) { double **mul; mul = new double * ; for (int i = 0; i < n; i++) { mul[i] = new double ; } for (int x = 0; x<n; x++) for (int y = 0; y<n; y++) { mul[x][y]=0; } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { for (int k = 0; k < n; k++) { mul[i][j] = mul[i][j]+m1[i][k]*m2[k][j]; } } } return mul; } int main() { cout << "请输入矩阵的阶数" << endl; int n; cin >> n; cout << "请输入第一个矩阵的参数" << endl; double **m1 = allocMatrix(n); cout << "请输入第二个矩阵的参数" << endl; double **m2 = allocMatrix(n); cout << "第一个矩阵为" << endl; printMatrix(m1, n); cout << "第二个矩阵为" << endl; printMatrix(m2, n); double **mul =multiple(m1, m2, n); printMatrix(mul, n); releaseMatrix(m1, n); releaseMatrix(m2, n); system("pause"); return 0; }
相关文章推荐
- C++实现矩阵类型的基本操作:创建矩阵(M x N)、释放内存、获取某一元素的值、修改某一元素的值、乘法操作
- 在C++中,要实现动态联编,必须使用(基类指针)调用虚函
- C++ 内存。二重指针,指针的高级使用
- 【C++】使用指针实现数据交换
- NumPy中的乘法运算符 * 指示按元素计算,矩阵乘法可以使用 dot 函数或创建矩阵对象实现
- 【C++】使用局部变量赋值而非引用,导致内存多次释放的野指针问题
- C++ 二叉树的实现以及指针使用注意事项
- C++实现矩阵乘法
- [C/C++]_[中级]_[使用智能指针的方式释放malloc出来的堆空间]
- 图像处理C++基础 02 ——使用读写文件的矩阵乘法
- 使用二维指针,实现单位矩阵(z)
- C/C++使用Lu键树实现智能指针及检查内存泄露
- 矩阵乘法 C++实现
- C++ 实现矩阵乘法
- 使用c++的成员指针实现类似Borland VCL组件的事件回调
- java中使用C++指针实现java调用C#
- 矩阵乘法 模板函数的实现 可以处理多维矩阵 c++
- 最长公共子序列的C++实现---附二维指针的使用方法
- 【C++】使用局部变量赋值而非引用,导致内存多次释放的野指针问题
- cublas中执行矩阵乘法运算的函数 首先要注意的是cublas使用的是以列为主的存储方式,和c/c++中的以行为主的方式是不一样的。处理方法可参考下面的注释代码