2014-01-13 58 views
0

我正在寫一個程序,在二維數組中添加元素之和並打印出總和。二維數組打印出元素之和

這裏我到目前爲止的代碼:

#include <iostream> 
#include <stdio.h> 

int main() 
{ 
    int array [3][5] = 
    { 
     { 1, 2, 3, 4, 5, }, // row 0 
     { 6, 7, 8, 9, 10, }, // row 1 
     { 11, 12, 13, 14, 15 } // row 2 
    }; 

    int i, j=0; 
    int num_elements=0; 
    float sum=0; 

    for (i=0; i<num_elements; i++) 
    { 
     sum = sum + array[i][j]; 

    } 

/*for(i=0; i<num_elements; i++) 
    { 
    printf("%d ", array[i][j]); 
    }*/ 

    // printf("a[%d][%d] = %d\n", sum); 

    // output each array element's value 
    for (i = 0; i < 3; i++) 
    { 
     for (j = 0; j < 5; j++) 
     { 
      printf("a[%d][%d] = %d\n", i,j, array[i][j]); 

     } 
    } 

    system("PAUSE"); 
    return 0; 
} 

我可以打印出每個陣列精細的元素。但是我想打印出元素的總和。我嘗試了一個,因爲你可以在評論部分看到它,但它不起作用。誰能幫忙?

+0

如果您希望僅使用一個循環進行求和,請參閱下面的答案。 –

回答

2

您僅加你的矩陣的第一列:

sum = sum + array[i][j]; 

其中j設置爲0

使用雙循環:

for (i = 0; i < 3; i++) 
{ 
    for (j = 0; j < 5; j++) 
    { 
     sum+=array[i][j]; 

    } 
} 
+2

更好地使用number_of_rows和number_of_columns而不是3和5。 –

0

這個循環的問題:

int i, j=0;  
int num_elements=0; 
float sum=0; 

for (i=0; i<num_elements; i++) 
{ 
    sum = sum + array[i][j]; 

} 

它不會xecute可言,因爲i<num_elements是不正確的 - num_elements是0。它的頂部,你永遠不要設置j遠離0

你需要一個雙循環,就像你使用以後:

for (i = 0; i < 3; i++) 
{ 
    for (j = 0; j < 5; j++) 
    { 
     sum += array[i][j]; 

    } 
} 
0

試試這個總結二維所有元素的基於陣列

for (i = 0; i < 3; i++) 
{ 
    for (j = 0; j < 5; j++) 
    { 
     sum=sum+array[i][j]; 

    } 
} 
0

首先,你已經初始化num_elements爲零。所以你不會得到任何東西。

而且,對於這一點,

你需要一個雙循環,來打印所有元素之和。還申報額外變量,如row_num(對於行數)和element_num對於中的元素個數每個行,然後使用此代碼。

for(i=0; i<row_num; i++) 
{ 
    for(j=0; j<element_num; j++) 
    { 
      sum = sum + array[i][j]; 
    } 
} 
0

由於數組存儲在連續內存中,所以只能使用一個循環。

for (int i=0; i<(3*5); i++) <-- 3*5 is num_of_colums*num_of_rows. 
{ 
    sum = sum + *(array[0]+i); 
}