2016-03-31 3 views
-4

auf Null Lets sagen, dass ich wie soWie bestimmte Spalte von 2d Array

eine spezielle 2D-Array von 100x100 habe ich eine Adjazenzmatrix Umsetzung und damit mag ich in der Lage sein, eine bestimmte Spalte und Zeile auf Null zurück (in diesem Fall die gleiche Spalte und Zeile), das Nullsetzen von Zeilen ist ziemlich einfach, aber ich bin nicht wirklich in der Lage zu verstehen, wie ich für Spalten vorgehen würde.

Zum Beispiel das zweite Element der Adjazenzmatrix auf Null:

enter image description here

+1

'for (int i = 0; i uSeemSurprised

+3

Was? Tauschen Sie die Indizes aus, mit denen Sie auf das Array zugreifen. –

Antwort

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

alberne mich, das war die einfachste Sache überhaupt. Danke vielmals! – spacing

0

Zum Beispiel können Sie es auf folgende Weise tun

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

Für i gleich 1a[1][1] wird zweimal auf Null gesetzt. Es ist jedoch unwichtig. Wenn Sie möchten, können Sie die if-Anweisung für diesen Fall verwenden.

Zum Beispiel

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

Hier ist ein demonstratives Programm ist

#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"); 
    } 
} 

Das Programm Ausgabe

3 2 5 
6 4 2 
1 61 45 

3 0 5 
0 0 0 
1 0 45 
0

ist, wenn Mat eine quadratische Matrix ist, einfach das tun:

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;  
    } 
} 

Passen Sie einfach auf, wenn Ihre Matte gerade/ungerade Größe hat! wenn die Größe gleichmäßig ist, nehme ich an, dass Sie 2 Spalten und 2 Zeilen benötigen! dann sollten Sie das tun:

Folgen Sie diesen auch Beispiel in diesem Bild:

enter image description here