事例演習2 最短経路探索 < 課題 >
【 課題1 】 以下のプログラムは,図2-22で示した手順をC言語で記述したものである. ソースコード中の「次にトークンを進めるべきノードの決定」部分の手続きを,NSチャートを用いてプログラム論理設計せよ.同時にC言語を用いてプログラミングせよ. |
● モジュール#2 pathSearch (最短経路探索)のC言語ソースコード
|
|
|
【 課題2 】 図2-23で示すような形式で,ノードの接続関係と距離が2次元配列"リンクデータ"に格納されているものから,図2-20(以下に再掲)で示したデータ形式に変換するネットワークデータ表の作成モジュール"nodeBuild"の手順を設計し,C言語でプログラムせよ. |
【 課題3 】 最短経路が求まったとして,経由距離合計配列totalDist,経由ノード表route,始点ノードstratNode,終点ノードend_Nodeを入力して,最短の経由距離合計,および始点のノードから終点ノードに向けて経由ノードを表示するモジュール"printRoute"を設計しプログラムせよ.なお,経由するノードの羅列は一旦1次元配列routeNodeに格納してから表示するものとする. |
【 課題4 】 次のような関数が与えられているとして,リンク時間の修正ダイアログボック ス2(DialogBox2)のハンドラ関数(DialogModifyLinkProc)の中身をプログラム せよ.ただし,プログラムで用いる大域変数は以下の通りとする. |
【 課題5 】 課題4で作成したイベントハンドラ関数を用いて,コントロールキーを押下しなが ら, まず修正すべきリンクの始端ノード・オブジェクトを画面上で選んで左ボタンでクリックし,次に終端ノード・オブジェクトを選んで右マウスボタンをクリックしたとき, DialogBox2を表示するイベントハンドラ関 数GL_RBUTTONDOWN( hInst, hWnd , lParam )の中身をプログラムせよ.ただし,プログラムで用いる大域変数は以下の通りとする. |