2016-03-31 73 views
-4

的特定列可以說我有100×100的特定二維數組,像這樣如何零二維數組

我採取鄰接矩陣,因此我希望能夠爲零的特定列和行(在這種情況下相同的列和行),清零行非常簡單,但我不能真正理解我將如何處理列。

例如零鄰接矩陣的第二個元素:

enter image description here

+1

'的for(int i = 0; I uSeemSurprised

+3

什麼?交換用於訪問數組的索引。 –

回答

1
int column=1; //in your example 
int row=1;//in your example 


//for rows 
for(int i = 0; i<numberofrows; i++) 
{ 
    array[i][column]=0; 
} 

//for columns 
for(int i = 0; i<numberofcolumns; i++) 
{ 
    array[row][i]=0; 
} 
+0

愚蠢的我,這是有史以來最容易的事情。萬分感謝! – spacing

0

例如,你可以做到這一點通過以下方式

for (size_t i = 0; i < 3; i++) 
{ 
    a[1][i] = 0; 
    a[i][1] = 0; 
} 

對於i等於1a[1][1]將被設置爲零兩次。然而這並不重要。如果你想要,你可以使用if語句來處理這種情況。

例如

for (size_t i = 0; i < 3; i++) 
{ 
    a[1][i] = 0; 
    if (i != 1) a[i][1] = 0; 
} 

下面是一個示範程序

#include <stdio.h> 

#define N1 3 

int main(void) 
{ 
    int a[N1][N1] = 
    { 
     { 3, 2, 5 }, 
     { 6, 4, 2 }, 
     { 1, 61, 45 } 
    };   

    for (size_t i = 0; i < N1; i++) 
    { 
     for (size_t j = 0; j < N1; j++) printf("%2d ", a[i][j]); 
     printf("\n"); 
    } 

    size_t row = 1; 
    size_t col = 1; 

    for (size_t i = 0; i < N1; i++) 
    { 
     a[row][i] = 0; 
     a[i][col] = 0; 
    } 

    printf("\n"); 

    for (size_t i = 0; i < N1; i++) 
    { 
     for (size_t j = 0; j < N1; j++) printf("%2d ", a[i][j]); 
     printf("\n"); 
    } 
} 

程序輸出是

3 2 5 
6 4 2 
1 61 45 

3 0 5 
0 0 0 
1 0 45 
0

如果墊是方陣,簡單做到這一點:

k= (cols_of_mat)/2; 


for(int i = 0; i<k; i++){ 
    mat[k][i] = 0; 
    mat[i][k] = 0; 

    //if Mat can have even size  
    if(k%2==0){ 
     mat[k-1][i] = 0; 
     mat[i][k-1] = 0;  
    } 
} 

只要注意墊子的尺寸是奇數還是偶數!當尺寸變小時,我想你需要2列和2行!那麼你應該這樣做:

按照此圖像在此甚至例如:

enter image description here