私は2D配列を持っています。8 行と 10 列すべてを反復処理し、for ループを使用して値を読み取ります。配列と出力は次のとおりです。
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 2 1 1 1 0 0 0 0 0
0 0 0 1 2 1 2 2 1 2 1 2 1 0 0 0
0 0 0 1 2 1 2 2 1 2 1 2 1 0 0 0
0 0 0 1 2 1 2 2 1 2 1 2 1 0 0 0
0 0 0 1 2 1 2 2 1 2 1 2 1 0 0 0
0 0 0 1 2 1 2 2 1 2 1 2 1 0 0 0
0 0 0 1 2 1 2 2 1 2 1 2 1 0 0 0
0 0 0 1 2 1 2 2 1 2 1 2 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
empty row board[3][3] = 0 empty row board[3][4] = 1
empty row board[4][3] = 0 empty row board[4][4] = 2
empty row board[5][3] = 0 empty row board[5][4] = 1
empty row board[6][3] = 0 empty row board[6][4] = 2
empty row board[7][3] = 0 empty row board[7][4] = 2
empty row board[8][3] = 0 empty row board[8][4] = 1
empty row board[9][3] = 0 empty row board[9][4] = 2
empty row board[10][3] = 0 empty row board[10][4] = 1
empty row board[11][3] = 0 empty row board[11][4] = 2
empty row board[12][3] = 0 empty row board[12][4] = 1
実際の配列は、ゼロのバッファー (両側に少なくとも 3 つ) で囲まれています。行 =3 を読み取ろうとすると、要素は読み取られず、すべてゼロとして読み取られます。配列の下に、行 3 の要素と行 + 1 の要素 (つまり 4) を出力しました。行 4 からすべての要素を読み取ることができますが、行 3 からは何も読み取ることができません。なぜですか? 助けてください!!!
@Mat 投稿コード:
行が空かどうかを確認しようとしています。
int emptyRow(int row){
int i, counter;
counter = 0;
for(i=3; i<=num_col+2; i++) {
printf ("empty row board[%d][%d] = %d ", i, row, board[i][row]);
printf ("empty row board[%d][%d] = %d\n", i, row+1, board[i][row+1]);
if(board[i][row] == 1 || board[i][row] == 2 || board[i][row] == 3)
counter++;
}
return counter; /* Counter = 0 means its empty*/
}
渡される行は 3 で、カウンターは行の要素数をカウントします。num_col は列の数です。関数は、counter = 0 を返します。これは、行 3 が空であることを意味します。
ファイルから入力を読み取って出力しています。このコードは、私たちが取り組んでいる AI の一部であり、コードが複雑であるため、すべてのコードを投稿することはできません。プリント基板は以下に掲載されています。
行 3 は境界条件であるため、行 3 の上にあるものは気にしませんが、行 3 を適切に読み取る必要があります。
void print_board(){
int i;
int j;
for(i=0;i< 16; i++){
for(j=0;j<16;j++){
printf("%d ", board[j][i]);
}
printf("\n");
}
}