0
2次元配列のブール値の特定のセルの周囲の値を調べる際に問題があります。私が調べている特定の値が2D配列の端またはコーナーにないと仮定しようとしました。私は、ループを8回反復するように設定しました。なぜなら、チェックしている値が2次元配列の端にない場合、8つの近傍が存在するからです。特定の細胞の周囲にある細胞の数を取得する機能は次のとおりです。2D配列の特定の値をチェックする方法
trueに設定された(3,5)を中心に、すべての値に対してcounter
変数を増やしたいとします。
このコードを実行すると、カウンタが16を返しています。しかし、指定されたセルを囲む16個の真の値がありません。ループ内のロジックが間違っていますか?
int getNeighborCount(boolMatrix generation, int row, int col){
int counter = 0;
row = 3; //the cell we are checking around is at row 3, column 5
col = 5;
//8 neighbors
if (col > 0 && row > 0){
for (int i = 0; i < 8; i++){
if(generation.get(row - 1, col - 1)){
counter++;
} if(generation.get(row - 1, col)){
counter++;
} if(generation.get(row - 1, col + 1)){
counter++;
} if(generation.get(row, col - 1)){
counter++;
} if(generation.get(row, col + 1)){
counter++;
} if(generation.get(row + 1, col - 1)){
counter++;
} if(generation.get(row + 1, col)){
counter++;
} if(generation.get(row + 1, col + 1)){
counter++;
}
}
cout << "counter is " << counter;
}
return counter;
}
おそらくべき:ポイントは0 0(またはエッジ近く)にあるとき
また、あなたの
if
文は、あなたが簡単にif
ステートメント内の条件を入れていることを修正することができます実行されません。配列の右端または下端にいるかどうかも確認してください。 – Xenotoad@Xenotodはい、本当です。それは練習として残されています:) – Rakete1111
恐ろしい!私は実際にこれとビオラを投稿した直後にforループを削除しました!出来た。私は助けに感謝します!私は現在エッジをチェックしています(: –