如何在C中将两个1d数组相乘后制作一个二维数组?

时间:2015-12-18 09:16:56

标签: c arrays

我使用的代码如下:

int m=0;
int n=0;

//to populate the output array
for( int i=0 ; i<3 ;i++)
{
    for(int j=0 ;j<3; j++)
    {
        if(n<3)
        {
            DeltaWhj[m][n] =  deltaO[i][j] *Sh[0][m];
            n++;
        }
        if(m==1 && n<3)
        {
            DeltaWhj[m][n] =  deltaO[i][j] *Sh[0][m];
            n++;
        }
        else
        {
            DeltaWhj[m][n] =  deltaO[i][j] *Sh[0][m];
            n++;
        }
    }
}

for(int i=0 ;i<3 ;i++)
{
    cout<<"\n\n";
    for(int j=0; j<3 ;j++)
    {
        cout<<DeltaWhj[i][j]<<"\t\t";
    }
}

两个输入数组是:

double deltaO[1][3]={1  , 1 , 1};
double Sh[1][3]={1  , 2  , 1};

将deltaO与Sh的每个元素相乘后的输出应为

double DeltaWhj[3][3]={
{1  , 1 , 1},
{2  , 2 , 2},
{1  , 1 , 1}};

1 个答案:

答案 0 :(得分:1)

for (int i = 0; i < 3; ++i) {
   for (int j = 0; j < 3; ++j) {
        result[i][j] = Sh[0][i] * deltaO[0][j];
   }
}

另外,请考虑为double deltaO[3]制作双deltaO[1][3]而不是Sh[1][3]。考虑定义一个大小的常量并使用它而不是幻数3。