A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ループ文をコピペしてから変数名と判定式を直すの忘れた。
誤
for (y=1;y<=3;y++) {
for (x=1;y<=3;y++) {
正
for (y=1;y<=3;y++) {
for (x=1;x<=8;x++) {
実際、こういうバグは良くやる(^^;
No.1
- 回答日時:
元よりも一回り大きいint型の2次元配列を用意して
◇◆◇◇◇◆◇◆
◆◆◇◆◇◇◇◆
◇◇◇◆◆◆◇◆
の各文字を数値に変換して
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
-1,-1, 0,-1,-1,-1, 0,-1, 0,-1
-1, 0, 0,-1, 0,-1,-1,-1, 0,-1
-1,-1,-1,-1, 0, 0, 0,-1, 0,-1
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
のようなデータを作る。
一回り大きくなっていて、周囲がすべて-1になっている事に注意しよう。
で、こういうデータが用意できたら「集まり番号」を「0」に初期化しておく。
次に、配列の[1][1]~[1][8]、[2][1]~[2][8]、[3][1]~[3][8]の順でスキャンしていく。
void main(void)
{
int 集まり番号=0;
int y,x;
文字列をintの二次元配列に変換する関数();
for (y=1;y<=3;y++) {
for (x=1;y<=3;y++) {
if ( ! 二次元配列[yの位置][xの位置]) {
trace(y,x,++集まり番号);
}
}
}
printf("集まりの個数は%d個です\n",集まり番号);
}
最初に[1][2]の所(以下の★に相当する所)で、配列要素が0になっているのを見つけたら、集まり番号をインクリメントしてから、追跡ルーチンを呼び出す。
◇★◇◇◇◆◇◆
◆◆◇◆◇◇◇◆
◇◇◇◆◆◆◇◆
追跡ルーチンは
void trace(int yの位置,int xの位置,int 集まり番号)
{
if ( ! 二次元配列[yの位置][xの位置]) {
trace(int yの位置-1,int xの位置,int 集まり番号);
trace(int yの位置+1,int xの位置,int 集まり番号);
trace(int yの位置,int xの位置-1,int 集まり番号);
trace(int yの位置,int xの位置+1,int 集まり番号);
二次元配列[yの位置][xの位置] = 集まり番号;
}
}
って感じ。
メインルーチンの二重ループが終了した時点で、二次元配列の中身は
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
-1,-1, 1,-1,-1,-1, 2,-1, 3,-1
-1, 1, 1,-1, 4,-1,-1,-1, 3,-1
-1,-1,-1,-1, 4, 4, 4,-1, 3,-1
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
と言う状態になっている筈です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
c言語
-
c言語プログラミング 等差数列...
-
define で 配列
-
構造体のextern方法
-
C#で構造体の配列を持った構造...
-
C言語において、 配列要素をひ...
-
MFC - ダイアログボックスのPic...
-
C言語の2次元配列 容量が大き...
-
2次元配列のマスを数える方法...
-
C言語 ファイルの指定された行...
-
Cのエラー
-
コンボボックスでデフォルト値...
-
C#で配列が空かを判定するには?
-
C#でのフィボナッチ数列
-
ポインタを使って構造体の配列...
-
C言語の課題が出たのですが自力...
-
MFCのCArrayを使った二次元配列
-
C言語の配列のコピーについて
おすすめ情報