每天学习一点点(二维数组的动态定义,矩阵的乘法(非递归实现))

原创 2018年04月15日 10:09:01

一维数组的动态定义很容易写

int *a=new int[X];

但是二维数组 如果用

int **a=new int[x][y];

这就会出错
正确的做法是先声明一个n维数组,每个单元是指向int的指针,再分别对每个单元分配内存.
代码如下

int **a = new int*[M];//动态定义二维数组的方法
    for (int i = 0; i < M; i++)
        a[i] = new int[N];

矩阵相乘的计算方法是这里写图片描述
所以可以用三个循环来解决此规则
代码如下

#include<iostream>
using namespace std;
int main()
{
    int M, N;
    cin >> M >> N;
    int **a = new int*[M];//动态定义二维数组的方法
    for (int i = 0; i < M; i++)
        a[i] = new int[N];
    int**b = new int*[M];
    for (int j = 0; j < M; j++)
        b[j] = new int[N];  //两个动态二维数组定义完毕

    for (int m = 0; m < M; m++) //给数组a,b赋初值
        for (int n = 0; n < N; n++)
            cin >> a[m][n];
    for (int m = 0; m < M; m++)
        for (int n = 0; n < N; n++)
            cin >> b[m][n];

    int**c = new int*[M];
    for (int l = 0; l < M; l++)
        c[l] = new int[N];//定义第三个矩阵作为相乘后得到的矩阵

    int p, q,k;
    for (p = 0; p < M; p++)//矩阵的行
        for (q = 0; q < N; q++)//矩阵的列
            for (k = 0,c[p][q]=0; k < M; k++)//矩阵的行列之间在相乘时的关系 最终的矩阵与左侧矩阵的行有关
                //注意c数组需要初始化!!!!!
                c[p][q] += a[p][k] * b[k][q];//矩阵相乘

    for (int i = 0; i < M; i++)
    {
        for (int j = 0; j < N; j++)
            cout << c[i][j]<<" ";
        cout << endl;
    }
}

在写此代码时 忘记了将c数组初始化 一开始得出c矩阵的所有数值都是乱码 要多多注意初始化问题(不能犯低级错误)!

机器学习之矩阵

-
  • 1970年01月01日 08:00

每天学习一点点,每月学习多一点,每年学习多多点

Oracle优化的几个方面:-- 外部调整:我们应该记住Oracle并不是单独运行的。因此我们将查看一下通过调整Oracle服务器以得到高的性能。通常所说的硬件性能>-- Row re-sequenc...
  • sanoul
  • sanoul
  • 2005-01-20 08:20:00
  • 1032

矩阵类 及其基本运算

  • 2009年12月28日 18:21
  • 58KB
  • 下载

每天总结一点点,每天进步一点点!

今天在老师的指导下又捡起许多
  • u013766998
  • u013766998
  • 2014-04-18 20:32:34
  • 449

定义一个动态的二维数组?

在C++中实现变长数组             1.变长一维数组         这里说的变长数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组。实现变长数组最简单的是变长一维数...
  • chary8088
  • chary8088
  • 2006-11-01 12:57:00
  • 3915

C语言动态二维数组实现矩阵的相乘

c语言动态二维数组实现矩阵相乘 如何申请动态二维数组,代码如下 该方法是最灵活的,可以任意指定行数和列数 /* *申请a数组的内存* */ /*先申请每一行...
  • nuist_gaopeng
  • nuist_gaopeng
  • 2016-12-21 13:41:42
  • 2150

C++ 如何定义动态二维数组?

今天遇到了一个简单的问题,怎么建立动态的二维数组,如何函数传递二维数组; 需要先申请一个M个元素的一维指针空间,然后对每个一维指针上,申请N个元素的对象空间。这样就可以申请一个M行N列的二维数组空间...
  • JackieFrederickHYZ
  • JackieFrederickHYZ
  • 2016-03-07 15:40:18
  • 1236

使用一维数组和二维数组来存储矩阵并进行乘法运算

#include using namespace std; int c[3][2]={0}; int d[6]={0}; //二维数组存储矩阵乘法 void multi(int a[3][3], i...
  • gukesdo
  • gukesdo
  • 2012-05-07 21:49:53
  • 5297

二维数组 矩阵相乘

两个矩阵相乘,可以用3个二维数组解决。两个存初始值,一个存结果。 #include using namespace std; #define rows 8 #define cols 8 int a[...
  • yanyanwenmeng
  • yanyanwenmeng
  • 2016-12-08 21:22:17
  • 979

C/C++定义二维数组(矩阵)

本文介绍了C/C++二维数组定义,分维度确定与否来介绍。
  • FX677588
  • FX677588
  • 2016-09-30 09:24:20
  • 2091
收藏助手
不良信息举报
您举报文章:每天学习一点点(二维数组的动态定义,矩阵的乘法(非递归实现))
举报原因:
原因补充:

(最多只允许输入30个字)