Labs Guide for Programming in C III

プログラミングIII A,B 実習ガイド


「プログラミングIII A,B」のプログラミング実習について書かれています.

課題1

n個の点の並べ替え(復習)
E2上のn個の点データ (x0,y0),(x1,y1),...,(xn-1,yn-1), が保存されているファイルがある.
ファイルは,1行目に個数n, 2行目以下にその個数分の点データが1点あたり1行で保存されている. 点データは,点番号,x座標,y座標の順である.

ファイルから点データを読み込み,x座標の小さい順に表示 するプログラムを作成せよ. ただし,x座標が同一の場合には,y座標が小さい 順とせよ.

レポートは,紙レポートとする.1枚目は表紙,2枚目以降は, プログラムで使用したデータ構造とアルゴリズムを詳細に説明した後,ソースファイルを印刷して添付せよ. 実行結果は添付する必要はない.(ソースファイルは,2UPで印刷す る等,紙の節約を考慮すること)

提出〆切:??月??日(?曜日)講義開始時に回収
(後の課題を実施する際に必要な課題のため〆切を定めません.)

注意:今後作成するプログラムは,過去に作成したものを次々と流 用するので,他人をものをパクって作成すると理解不能になる. この講義では,プログラムは必ず自分自身作成 し,今後のプログラム作成に向けていつでも流用できるようにしておくこと


課題2

n個の線分の並べ替え(応用)
E2上のn本の線分データ s0,s1,...,sn-1 (ただし, si=pip'ipi=(xi,yi), p'i=(x'i,y'i)) が保存されているファイルがある.
ファイルは,1行目に個数n, 2行目以下にその個数分の線分データが1本あたり1行で保存されている. 線分データは,線分番号,端点のx座標,y座標,も う一つの端点のx座標,y座標の順である.

ファイルから線分データを読み込み,2つの端点のうち x座標の小さい順に表示するプログラムを作成せよ. ただし,x座標が同一の場合には,y座標が小さい 順とせよ.1つの端点が同一の場合は,他方の端点で評価せよ.

レポートは,紙レポートとする.1枚目は表紙,2枚目以降は, 点データのソートとのアルゴリズムの違いを詳細に説明した後,ソースファイルを印刷して添付せよ. 実行結果は添付する必要はない.(ソースファイルは,2UPで印刷す る等,紙の節約を考慮すること)

提出〆切:??月??日(?曜日)講義開始時に回収
(後の課題を実施する際に必要な課題のため〆切を定めません.)

注意:今後作成するプログラムは,過去に作成したものを次々と流 用するので,他人をものをパクって作成すると理解不能になる. この講義では,プログラムは必ず自分自身作成 し,将来のプログラム作成に向けていつでも流用できるようにしておくこと


課題3

n本の線分の交差(単純法)
任意角度,任意長さのn本の線分データが ファイルに保存されている. ファイルは1行目はデータの数,2行目以降はそのデータ数分の線分データで ある.線分データは1列目が線分番号,2,3列目が端点のx,y 座標,4,5列目がもう一つの端点のx,y座標である.

この線分データから,交差する線分対の番号の組とその数を求めるプロ グラムを作成し,その動作を確認せよ. 報告事項は,そのプログラムのアルゴリズムをフローチャート等に より示した説明,およびプログラムソースファイルである.

ただし,ここでは教科書29ページ前までに習った内容を使った単 純法とせよ(水平,垂直な線分や,もっと効率の良いアルゴリ ズムは後で行なう課題なので,ここでは高校までに習った内容を主に利用 すること.教科書45〜46ページの練習問題2−1〜3も参考に せよ)

提出〆切:??月??日(?曜日)講義開始時に回収
(後の課題を実施する際に必要な課題のため〆切を定めません.)


課題4

n本の直交線分の交差(平面走査法)
n本の直交線分データがファイルに保存されている. ファイルの内容は次の通りとする. ファイルは1行目はデータの数,2行目以降はそのデータ数分の線分データで ある.線分データは1列目が線分番号,2,3列目が端点のx,y 座標,4,5列目がもう一つの端点のx,y座標である.

この直交線分データから,平面走査法により交差する線分対の番号 の組とその数を求めるプログラムを作成し,その動作を確認せよ. 報告事項は,そのプログラムのアルゴリズムをフローチャート等に より示した説明,およびプログラムソースファイルである.

ただし,ここでは教科書31ページに記載された平面走査法とせ よ.教科書45〜46ページの練習問題2−4〜6も参考に せよ)

提出〆切:2013年12月2日(月曜日)


課題5

n本の任意角度線分の交差(平面走査法)
n本の任意角度線分データがファイルに保存されている. ファイルの内容は次の通りとする. ファイルは1行目はデータの数,2行目以降はそのデータ数分の線分データで ある.線分データは1列目が線分番号,2,3列目が端点のx,y 座標,4,5列目がもう一つの端点のx,y座標である.

この任意角度線分データから,平面走査法により交差する線分対の番号 の組とその数を求めるプログラムを作成し,その動作を確認せよ. 報告事項は,そのプログラムのアルゴリズムをフローチャート等に より示した説明,およびプログラムソースファイルである.

ただし,ここでは教科書37ページに記載された一般線分の平面走査法とせ よ.教科書46ページの練習問題2−7〜8も参考にせよ)

提出〆切:2013年12月16日(月曜日)講義開始時に回収

(参考)交差列挙アルゴリズムの説明用PPT


課題6

n点の凸包の計算(効率の良い手法)
n個の点データがファイルに保存されている. ファイルは1行目はデータの数,2行目以降はそのデータ数分の点データで ある.点データは1列目が点番号,2,3列目が点のx,y座標である.

この点データから,凸包の辺を求める効率の良いプログラムを作成 し,入力データ数に対する実行時間の挙動について調査せよ. ただし,ここで言う「効率の良いプログラム」とは,教科書48ペー ジから始まるいくつかのアルゴリズムのうち1つ選択せよ.

報告事項は,そのプログラムのアルゴリズムをフローチャート等に より示したもの,プログラムソースファイル,および実行時間で, 単純法も実現しそれと比較すること. (横軸に入力した点の数.縦軸に実行時間とし たグラフを作成し,実行時間について明らかに違う挙動を表すこと がわかるように工夫せよ.)

提出期限:2014年1月27日(月曜日)レポート回収ボックス にて回収


参考リンク


2006.11.06.
2012.12.10.(最終更新)
fmiso at sist.chukyo-u.ac.jp