私は2次元配列の誤解をしているだけで、私はそれを理解していません。フォーラムですべてをチェックして、これを解決する方法を見いだしましたが、役に立たなかったのです。個別の行と個別の列を取得するための2Dポインタの計算
私は2次元配列を持ち、findTile()
関数を使ってポインタ演算を使って個々の行を取りたいと思っています。相応に、私はまた、列全体を取っていたいですか?
メソッドヘッダーはそのままで変更できません。タイルX(xは数字、タイルは単なる配列単位)を見つけると、方向(上、下、左、右)に沿って操作することができます。配列内のすべての周囲の値はそれに応じてシフトし、ラップします。だから、配列
[1][2][3]
[4][5][6]
[7][8][9]
に「9アップ」
[1][2][6]
[4][5][9]
[7][8][3]
を意味するだろう「3を残した」私だけのようにこれらの行を操作する方法を見つけることができるのであれば
[1][2][6]
[4][5][9]
[8][3][7]
を意味しますそれは素晴らしいことですが、それが問題です。私は機能で私のfindTile()
機能を使わなければならないし、私は '?'として示されているパラメータに何を割り当てることができないのか分からない。
static bool findTile(int tile, int rows, int cols, int grid[][cols], int *r, int *c)
{
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
if (grid[i][j] == tile)
{
r = grid[i];
c = grid[j];
return true;
}
}
}
return false;
}
bool moveLeft(int tile, int rows, int cols, int grid[][cols])
{
findTile(tile, rows, cols, grid, ?, ?);
}
してくださいあなたは私にこのような問題に対処する方法についていくつかの洞察を与えるだろうと、多分、この問題を解決するためにそこにあるかのポインタ技術に私を啓発することができます。私はCであまり経験がありません。
。 –
'r = grid [i]; c = grid [j]; ' - >' * r = i; * c = j; '? – BLUEPIXY
ステップ1は、Cが2D配列の使用方法を指定していないことを認識することです。行の次元と、2D配列の列の次元は、どれだけ指定する必要がありますか。 – Lundin