2017-06-29 82 views
-2

有人可以幫我做到這一點 我想只填寫第一行然後是最後一行 我怎麼能這樣做這就是我所擁有的到目前爲止:C++二維數組填充只有頂行然後底行

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

對(INT J = 0;Ĵ<列; J ++){ 網格 [0] [j] = 1; grid [row-1] [j] = 1; } – user1438832

回答

3

行和列 我是在C初學者++和數量有沒有需要兩個循環甚至2D循環。既然你事先知道你只填充了兩行,你可以遍歷列並指定單個循環內的行。

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

可以說我們不知道有兩行6列 – craftx27

+0

@ craftx27變量已被使用。這將適用於任意數量的行和列,因爲'0'總是第一行,'rows - 1'總是最後一行。 – Charles

+0

這實際上是非常好的 – craftx27

1

你在做的那段代碼是在你的數組上迭代兩次。最早的時候,發生了什麼,是數組中的每個項設置爲1,這是因爲你的變量i去從0rows,並j去從0cols。因此,在做grid[i][j]時,如果有意義的話,這將最終經歷所有可能性(array[0][0],array[0][1] ... array[1][0]array[1][1] ...)。

然後,你正在做同樣的事情,除了用2 s填充你的整個陣列。這似乎不是你想要的。相反,應該這樣做:

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

這編輯了所有的行; OP不希望這樣。他只想要第一行和最後一行。 – Charles

+0

雖然這個例子只有兩行的事實可能會令人困惑... – Charles

+1

是的,所以在這種情況下,你的答案做他想做的事:) –