2013-04-15 69 views
2

我目前正在尝试编写一个程序,该程序使用以3个不同的10x10阵列作为参数的函数,并用第2个数组的产品填充第3个数组。如何在C++中将两个10x10数组相乘?

我们寻遍网络,试图弄清楚问题出在我自己的,但到目前为止,我只遇到了这样的:

(我填充第一阵列2的,第二个阵列3的)

#include <iostream> 

using std::cout; 
using std::cin; 
using std::endl; 

/************************************************ 
** Function: populate_array1 
** Description: populates the passed array with 2's 
** Parameters: 10x10 array 
** Pre-Conditions: 
** Post-Conditions: 
*************************************************/ 
void populate_array1(int array[10][10]) 
{ 
    int i, n; 
    for (i = 0; i<10; i++) 
    { 
    for (n = 0; n<10; n++) 
    { 
     array[i][n] = 2; 
    } 
    } 
} 

/************************************************ 
** Function: populate_array2 
** Description: populates the passed array with 3's 
** Parameters: 10x10 array 
** Pre-Conditions: 
** Post-Conditions: 
*************************************************/ 
void populate_array2(int array[10][10]) 
{ 
    int i, n; 
    for (i = 0; i<10; i++) 
    { 
    for (n = 0; n<10; n++) 
    { 
     array[i][n] = 3; 
    } 
    } 
} 

/************************************************ 
** Function: multiply_arrays 
** Description: multiplies the first two arrays, 
and populates the 3rd array with the products 
** Parameters: 3 10x10 arrays 
** Pre-Conditions: 
** Post-Conditions: 
*************************************************/ 
void multiply_arrays(int array1[10][10], int array2[10][10], int array3[10][10]) 
{ 
    int i, n, j; 
    for (i = 0; i<10; i++) 
    { 
    for (n = 0; n<10; n++) 
    { 
     for (j = 0; j<10; j++) 
     { 
     array3[i][n] += array1[i][j]*array2[j][n]; 
     } 
    } 
    } 
} 

int main() 
{ 
    int array1[10][10]; 
    int array2[10][10]; 
    int array3[10][10]; 

    populate_array1(array1); // Fill first array with 2's 
    populate_array2(array2); // Fill second array with 3's 

    multiply_arrays(array1, array2, array3); 

    cout << array1[5][2]; 
    cout << endl << array2[9][3]; 
    cout << endl << array3[8][4]; 

    return 0; 
} 

据我了解,这应该工作,但每当我打印第三阵列中的任何细胞,我不明白60在这里看到:

code output

任何帮助将不胜感激。

回答

8

您需要将array3中的所有值初始化为0.它不是为您完成的。如果你不这样做,你使用随机值作为初始值。

+2

啊,现在完美的作品。谢啦。 –

2

你需要做+ =在计算功能

int i, n; 
for (i = 0; i<10; i++) 
{ 
    for (n = 0; n<10; n++) 
    { 
     array3[i][n] = 0; 
    } 
} 
3

您还没有初始化array3之前添加之前进去的东西,即,初始化ARRAY3,所以你在array3与随机值结束了,尝试添加此功能:

void populate_array3(int array[10][10]) 
{ 
    int i, n; 
    for (i = 0; i<10; i++) 
    { 
    for (n = 0; n<10; n++) 
    { 
     array[i][n] = 0; 
    } 
    } 
} 

,并调用它在main

populate_array3(array3); 
4

另一个初始化ARRAY3到zero选择是

int array3[10][10] = {{}};