2017-06-29 5 views
-2

kann jemand bitte helfen Sie mir, dies zu tun Ich möchte nur die obere Zeile zuerst und dann die untere Zeile ausfüllen Wie kann ich das tun dies ist, was ich habe so weit:C++ 2D-Array füllen nur obere Zeile dann untere Zeile

const int rows = 2; 
    const int columns = 6; 
    int grid[rows][columns] = { 0 }; /* 0 0 0 0 0 0 
             0 0 0 0 0 0 
             */ 


for (int i = 0; i < rows; i++) 
    { 
    for (int j = 0; j < columns; j++) 
    { 
     grid[i][j] = 1; //fill the top row only 
      /* Output: 
      1 1 1 1 1 1 
       0 0 0 0 0 0 
      */ 
    }  
} 

    for (int i = 0; i < rows; i++) 
     { 
     for (int j = 0; j < columns; j++) 
     { 
      grid[i][j] = 2; //fill the bottom row only 
       /* Output: 
       1 1 1 1 1 1 
       2 2 2 2 2 2 
      */ 
     }  
    } 

in diesem Fall: damit kann sagen, dass wir nicht wissen, die Anzahl der Zeilen und Spalten ich bin ein Anfänger in C++ und Arrays bitte, wenn jemand

+0

für (int j = 0; j user1438832

Antwort

3

Es besteht keine Notwendigkeit für zwei helfen könnte Schleifen oder sogar eine 2D-Schleife. Da Sie im Voraus wissen, dass Sie nur zwei Zeilen füllen, können Sie über die Spalten iterieren und die Zeilen innerhalb der einzelnen Schleife angeben.

for (int i = 0; i < columns; ++i) { 
    grid[0][i] = 1; 
    grid[rows - 1][i] = 2; 
} 
+0

lässt sagen, wir wissen nicht, dass es zwei Zeilen und 6 Spalten – craftx27

+0

@ craftx27 Variablen sind bereits im Einsatz. Dies funktioniert für eine beliebige Anzahl von Zeilen und Spalten, da "0" immer die erste Zeile ist und "Zeilen - 1" immer die letzte Zeile ist. – Charles

+0

das ist eigentlich wirklich gut – craftx27

1

Was Sie in diesem Bit Code tun, ist zweimal durchlaufen über Ihr Array. Das erste Mal, was geschieht, ist, dass jedes Element im Array auf 1 gesetzt ist Dies liegt daran, Ihre Variablen i0-rows geht, und j geht 0-cols. Wenn also grid[i][j] getan wird, wird dies schließlich alle Möglichkeiten durchlaufen (array[0][0], array[0][1] ... array[1][0], array[1][1] ...), wenn das Sinn macht.

Dann machen Sie das gleiche, außer füllen Sie Ihr gesamtes Array mit 2 s. Das ist scheinbar nicht das, was du willst. Stattdessen sollten Sie etwas tun:

for (int i = 0; i < rows; i++) { 
    for (int j = 0; j < cols; j++) { 
     grid[i][j] = i+1; 
    } 
} 
+0

Dies bearbeitet alle Zeilen; OP will das nicht. Er möchte nur die erste und letzte Reihe. – Charles

+0

Obwohl die Tatsache, dass das Beispiel nur zwei Zeilen hat, vielleicht verwirrend ist ... – Charles

+1

Ja, also in diesem Fall, Ihre Antwort tut was er will :) –