応用プログラミング及び実習 2017年度 第5回

注意

課題A(self) 締切:今回の実習終了時

郵便番号探索のサンプルプログラムの実行ファイルをコピーして実行してみよう

  1. 自分の aprog20XY ディレクトリへ移動してから,次のように cp コマンドを実行すると,zipsearch という名前の実行形式のファイルを手元にコピーすることができる.
    $ cp /roes/sample/takataka/aprog20XY/zipsearch   .     ← 最後の「空白+ピリオド」を忘れずに & XY は当然...
    これは,

    / (ルートディレクトリ)の中の roes ディレクトリの中の sample ディレクトリの中の...の zipsearch というファイルを,. つまりカレントディレクトリ(cd で移動した現在地)にコピーせよ

    という指示である.cp コマンドは,コピー先としてファイル名ではなくディレクトリ名を指定した場合,そのディレクトリ中に元と同じ名前でコピーしてくれる.
  2. 入手したファイルは実行形式のものであるから,そのまま実行できる.実際に実行して,適当な入力をして動作を確認しなさい.

課題B(self) 締切:今回の実習終了時

第4回課題B のプログラムの一部を使いまわして,改良しよう

新たに作成するソースファイル(main関数の定義を含むもの)の名前は ex05b.c として,次のようにする.

  1. ex04b.c では main の中でデータ件数を読み取り,それから個々の値を読み取るようにしていたが,ex05b.c では, scanf の戻り値を利用してデータ件数をプログラム自身に数えさせるようにする.ex05b.c 以外のソースをいじる必要はないはず
  2. 標準入力のリダイレクションを利用して,適当に作ったテキストファイル hoge に対して
    $ ./ex05b  <  hoge
    のように実行すると,hoge の中身を読み取って ex04b と同様の出力が得られるようにする

課題C(TA) 締切: 今回の実習終了20分前

郵便番号データを読み込むプログラムを作ろう

  1. 次の場所に,課題Aのプログラムで扱っている郵便番号データの一部を抜粋したテキストファイルがある.
    /roes/sample/takataka/aprog20XY/zipdataS
    課題Aの cp コマンドの使い方を参考に,これを自分の aprog20XY ディレクトリにコピーしなさい.コピーできたら,less で中身を眺めてみよう.
  2. 以下を修正して,上記のファイルを読み込んで,データ件数,ファイルの最初の行のデータ(郵便番号と住所),最後の行のデータを出力するプログラムを作りなさい.ソースファイル名は ex05zip.c としよう.ただし,次のことに注意.
    • check 変数 addr の宣言に NCHAR + 1 とあるのはなぜか,理由を考えておくこと.
    • check ファイルは1行ずつ読み込むものとして,fscanf の戻り値を利用してデータ件数をプログラム自身に数えさせよう.
    • check 郵便番号には 0 ではじまるものもある.最初の 0 も表示させるようにすること.printf の「書式指定」の仕方を書籍やウェブで調べよう.

&gist(83893d328566a80d7a8e);

課題D(TA) 締切:次回実習開始直後

第4回課題D のプログラムをもとに,機能強化したプログラムを作ろう.

改良点は次の通り.main を含むソースファイルの名前は ex05d.c とすること.

  1. 画像を左右反転させる関数 flipH を ex04image.c に追加する(当然あっちのファイルも修正が...).ちなみに,H は horizontally, V は vertically の意味です.
  2. 次のような処理手順とする.
    1. 画像をファイルから読み込む
    2. 画像処理のメニューを表示し,番号で処理を選択してもらう.処理は繰り返し適用できるようにしておく
    3. 画像をファイルへ書き出す

こんな感じ. この例では,uni3.pgm の画素値を反転してさらに上下も反転した画像が hoge.pgm に出力されることになります.


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS