for文がわかりません

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
doug

for文がわかりません

#1

投稿記事 by doug » 14年前

以下のプログラムにおいて、
ある1つ目の地点から2つ目の地点に移動し、また1つ目の地点に戻る往復移動コストが最小になるような2地点を求めるプログラムを作成したいのです。
例えば、地点0から地点1への移動コストは5であり、このコストが最小にしたいのです。


costとprintfの間をfor文で作成したいのですがわかりません。


コード:

#include< stdio.h >
#include< string.h >

void main()
{
	int cost[10][10]={ {0,5,2,3,8,2,8,5,3,9},
					   {3,0,4,5,4,6,7,1,9,2},
					   {5,5,0,8,7,8,9,9,6,7},
					   {9,8,7,0,7,4,6,7,3,6},
					   {8,7,5,6,0,6,4,6,7,9},
					   {6,6,6,7,8,0,9,9,9,9},
					   {4,4,5,6,9,8,0,5,6,7},
					   {7,7,8,6,8,5,8,0,6,6},
					   {8,9,8,9,7,9,4,5,0,5},
					   {6,5,4,5,3,5,6,7,8,0} };
	
	
	
	printf("1つ目の地点は%dです。\n",);
	printf("2つ目の地点は%dです。\n",);
	printf("そのときのコストは%dです。\n",);
}

box
記事: 2002
登録日時: 15年前

Re: for文がわかりません

#2

投稿記事 by box » 14年前

要するに、その配列の中で、ゼロでない最小値(あるいはその2倍の値)を
見つけたい、ということでしょうか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

non
記事: 1097
登録日時: 15年前

Re: for文がわかりません

#3

投稿記事 by non » 14年前

セールスマン問題とは違いますよね。
意味がわかりません。もう少し、説明してもらわないと、わかりません。
配列の見方は?
>地点0から地点1への移動コストは5であり
帰りのコストは3ですか?往復のコストなら8というわけではないのですか?
それとも、ほかの地点を経由しても可ということでしょうか?

>costとprintfの間をfor文で作成したいのですがわかりません。
これも意味不明です。
non

dong

Re: for文がわかりません

#4

投稿記事 by dong » 14年前

往路と復路でコストが異なるようにしたいです。

地点0から地点1への往復コストは5+3=8であります。

コストが最小になるような2地点の組合せが複数ある場合は、どれか1つだけを表示すれば良いです。

1つ目と2つ目の地点は異なる地点にしたいです。

box
記事: 2002
登録日時: 15年前

Re: for文がわかりません

#5

投稿記事 by box » 14年前

dong さんが書きました:往路と復路でコストが異なるようにしたいです。
異なるようにしたい、というよりは、異なるように配列の要素値を設定してある、ということじゃないんですか?

まあ、それはさておくとして、
cost[j] + cost[j] (ただし、iとjは異なる)
の最小値を求めたい、ということでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

dong

Re: for文がわかりません

#6

投稿記事 by dong » 14年前

そうです。

cost[j] + cost[j]の最小値を求めたいのです。

box
記事: 2002
登録日時: 15年前

Re: for文がわかりません

#7

投稿記事 by box » 14年前

値がゼロである対角線の上側の三角形だけ、または下側の三角形だけをたどるような
2重のループ(for文を使用)を書くことはできますか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

dong

Re: for文がわかりません

#8

投稿記事 by dong » 14年前

そこがわからないのです。

box
記事: 2002
登録日時: 15年前

Re: for文がわかりません

#9

投稿記事 by box » 14年前

ある程度予想していたことではありますが、ずいぶんレスポンスが早いですね。
よく考えた結果ですか?

例えば、対角線の上側にある三角形に着目すると、
i が 0 のとき、j はどこからどこまでをたどればいいですか?
i が 1 のとき、j はどこからどこまでをたどればいいですか?
...
i が 9 のとき、j はどこからどこまでをたどればいいですか?

j がたどる範囲について、何か法則は見えませんか?
そこのところを『ご自分の頭で』よく考えていただきたいです。

よく考えれば考えるだけ、プログラミング能力が向上すると思います。個人的には。
質問者さんは、そう思いませんか?
最後に編集したユーザー box on 2011年7月21日(木) 00:06 [ 編集 2 回目 ]
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

dong

Re: for文がわかりません

#10

投稿記事 by dong » 14年前

ヒントありがとうございます。

頑張ってみます。

閉鎖

“C言語何でも質問掲示板” へ戻る