[英]Creating a 2D array board
我正在嘗試創建一個二維矩陣板,哪一側由用戶輸入確定。 我創建了兩個D數組,但是沒有打印正確的數字。 例如,如果用戶輸入3,則假設創建一個3 * 3板,其數字為8、7、6、5、4、3、2、1、0。
但是,它會繼續在每行中打印相同的數字,例如876、876、876
我知道它正在執行我寫的操作,但是我想不出如何糾正它...我在想我需要一個重置為零的計數器,也許[i] [j] =計數器的值。
無論如何,這里是給麻煩的代碼。
for (i =0; i< row; i++)
{
for (j =0; j < col; j++)
{
game [i][j] = ((row * row)-1) - j;
printf( "%i", game[i][j] );
}
我如何填充電路板,以便從(行* col)-1到零打印。 太感謝了。
for ((i=0, k=0); i< row; i++)
{
for (j =0; j < col; j++)
{
game [i][j] = ((row * col)-1) - (k++);
printf( "%i", game[i][j] );
}
}
代碼中的基本錯誤是,在每次迭代中,從game [i] [j]中減去的值都會重新初始化為0。由於(row * col)的值對於給定的值是恆定的兩者,每次從總和中減去(0,1,2)都會得到相同的數字。
如示例所示,row = 3,col = 3,因此3 * 3 = 9(從0到8索引)。
因此,我們這樣做:
8 - 0 = 8
8 - 1 = 7
8 - 2 = 6
再次j重新初始化為0,所以我們再次有,
8 - 0 = 8
8 - 1 = 7
8 - 2 = 6
。
解決的辦法是,要減去的值應統一減小,這樣就不會在循環內重新初始化。
結果:
8 - 0 = 8
8 - 1 = 7
8 - 2 = 6
8 - 3 = 5
.
.
.
.
8 - 8 = 0.
希望這可以解決問題。
正如“自我”所建議的那樣,使用第三個變量是最簡單的方法(實際上是最有效的:每次迭代僅遞減一個)
int count = row * col - 1;
for (size_t i =0; i< row; i++)
{
for (size_t j =0; j < col; j++)
{
game [i][j] = count--;
printf( "%i", game[i][j] );
}
}
輸出:24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.