2017-03-23 1 views
0

Ich habe die folgenden 2 Dim-Array. Ich möchte herausfinden, welche Spalten für jede Zeile 1 s haben.C++ welche Spalten haben 1s für jede Zeile in 2 Dim-Array

Also, wenn ich den folgenden Code ausführen würde ich erwarten, zu sehen:

0:02 1:13 3:01 

aber ich weiß nicht, dass bekommen.

Gibt es irgendwelche Vorschläge?

#define MAX_N 100 

int myArray[4][4] = { 
    { 1,0,0,1 }, 
    { 0,1,1,1 }, 
    { 1,0,1,0 }, 
    { 0,1,1,0 } 
}; 

int main() 
{ 
    int K[MAX_N] = { 0,1,3 }; 
    int B[MAX_N]; 
    for (int i = 0; i < 3; i++) 
    { 
     K[i]; 
     cout << K[i] << ": "; 

     for (int x = 0; x < 4; x++) 
     { 
      int count = 0; 
      for (int y = 0; y < 3; y++) 
      {    
       // count = count +1;     
       if (myArray[x][y]) 
        count = count + 1; 

       if (count == K[i]) 
       { 
        B[x] = x; 
        cout << B[x] << " "; 
       } 
      } 
     } 
    } 

    system("pause"); 
    return 0; 
} 

wenn ich meine erste Array ändern und machen es so:

int myArray[4][4] = { 
    { 1,1,0,1 }, 
    { 0,1,1,1 }, 
    { 1,0,1,0 }, 
    { 0,1,1,0 } 
}; 

ich folgendes erhalten wird:

0: 02 1:013 3: 01 

Gibt es einen Weg, um die Kreuzung von denen zu erhalten? Mit anderen Worten, um nur eine 0 zu erhalten, da nur die 0 in den Zeilen gemeinsam ist, wenn die Spalte gleich K [i] ist. So würde das Ergebnis sein:

0:0 1:0 3:0 

oder auch nur

0 

Hoffe, dass es Sinn

Antwort

0

macht Wenn Sie Elemente sehen, die in einer Matrix wollen, müssen Sie nur 2 Zyklen und stattdessen erstellen neues Array für den Ausdruck der Zeilen, Sie können den Index in der FOR drucken.

int main() 
{ 
    int count; 
    for(int row = 0; row<4; row++){ 
    count = 0; 
    for (int col = 0; col < 4; col++) { 
     if(myArray[row][col] == 1) 
     count++; 
    } 
    cout<<"row "<<row<<"has "<<count<<" 1s"; 
    } 
    return 0; 
} 
4

Ich glaube, Sie wollen zu bekommen, welche Zeilen 1 enthält, wenn Spalte K[i] entspricht.

int main() 
{ 
    int K[MAX_N] = { 0,1,3 }; 
    for (int i = 0; i < 3; i++) 
    { 
     cout << K[i] << ": "; 

     for (int x = 0; x < 4; x++) 
     { 
      if (myArray[x][K[i]]) { 
       cout << x; 
      } 
     } 
     cout << " "; 
    } 

    system("pause"); 
    return 0; 
} 

Für Ihre zweite Frage, fügen Sie ein break; nach cout << x;.

+0

fast bei 1000 rep ... wird Ihnen helfen. – Walter

+1

@Walter Ich bin ein wenig aufgeregt, um eine unklare Frage zu lösen. Und danke dir! :-) –

+0

Ja, es war nicht so klar was ich gefragt habe. Yes indedd, was ich wollte, ist zu bekommen, welche Zeilen 1 enthält, wenn die Spalte gleich K [i] ist. Also, dieser Beitrag beantwortet meine Frage. Vielen Dank! Wenn man diesen Code dann läuft, wird Folgendes angezeigt: 0: 02 1: 13 3: 01, was ich will. – AlPap

Verwandte Themen