2017-06-29 10 views
-2

私は最初の一番上の行と一番下の行を塗りつぶします どうすればこのことができますか?これまでのところ:この場合C++ 2D配列の塗りつぶしのみ上の行と下の行

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 
      */ 
     }  
    } 

は:私たちはいくつかのいずれかが

+0

を。グリッド[行-1] [j] = 1; } – user1438832

答えて

3

2のための必要はありませんを助けることができれば、行と列 の番号iはC++での初心者ですと配列をしてください知らないと言うことができますループまたは2Dループさえも含みます。あなたは2つの行だけを投入していることを事前に知っているので、列全体を反復して、単一のループ内の行を指定することができます。

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

2行6列がわからないと言うことがあります – craftx27

+0

@ craftx27変数はすでに使用されています。 '0'は常に最初の行であり、' rows-1'は常に最後の行であるため、これは任意の数の行と列に対して機能します。 – Charles

+0

これは実際には本当に良いです – craftx27

1

このコードで何をしているのかは、配列を2回繰り返していることです。最初の時間は、何が起こっているか、あなたの変数i0からrowsに行くので、これは、アレイ内のすべての項目が1に設定されていることである、とj0からcolsに行きます。したがって、grid[i][j]を実行すると、最終的にすべての可能性(array[0][0]array[0][1] ... array[1][0]array[1][1] ...)が成立するでしょう。

次に、配列全体を2で埋め尽くすことを除いて同じことをしています。これは一見あなたが望むものではありません。代わりに、あなたはこのような何か行う必要があります(; J <コラム;​​ J ++ int型J = 0){ グリッド[0] [J] = 1

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

これはすべての行を編集します。 OPはそれを望んでいません。彼は最初と最後の行だけを望んでいる。 – Charles

+0

この例では2つの行しか持たないという事実が混乱しているかもしれませんが... – Charles

+1

その場合、あなたの答えは彼が望むことをします:) –

関連する問題