私は大学のコンピュータCプログラミングコースのイントロで、私たちは迷路解決課題を行うように求められます。私は迷路への到達可能性と解決策を見つけるためにこのコードを書いています。すべての迷路要素を含む構造M
を渡してから、再帰を使って迷路を検索します。私自身の中で関数を呼び出すと、引数をassign_reachability(&M)
として渡そうとするとエラーが発生するので、どの引数を渡すべきか分かりません。提案や助けがあれば、それを感謝します。再帰(迷路解決)を介して構造体へのポインタを渡す
おかげ
int
assign_reachability(maze_t *M){
int x, y;
x = M->XP;
y = M->YP;
if(M->maze[y][x].exit==EXIT){
return 1;
}
if(M->maze[y][x].type==NOGO || M->maze[y][x].visit==VISIT){
return 0;
}
M->maze[y][x].visit = VISIT;
/* check not on top row */
if(y!=0){
M->YP = (y-1);
if(assign_reachability(&M))
M->maze[y][x].reach=REACHABLE;
return 1;
}
/* check not on bottom row */
if(y!=((M->nrows)-1)){
M->YP = (y+1);
if(assign_reachability(&M))
M->maze[y][x].reach=REACHABLE;
return 1;
}
/* check not on left side */
if(x!=0){
M->XP = (x-1);
if(assign_reachability(&M))
M->maze[y][x].reach=REACHABLE;
return 1;
}
/* check not on right side */
if(x!=((M->ncolumns)-1)){
M->XP = (x+1);
if(assign_reachability(&M))
M->maze[y][x].reach=REACHABLE;
return 1;
}
return 0;
}
'M->迷路[Y] [X]へのポインタです。 reach == REACHABLE; '間違っています(効果なし) – BLUEPIXY
これはおかげさまです! @BLUEPIXY –
あなたのコンパイラはおそらく、役に立たない声明が何の効果もないとあなたに言ったかもしれません。残念なことに、Cコンパイラはデフォルトでは警告の数を多くすることはできません。 – Kaz