プログラミング実習II知機

11章 問題5. [ファイルの書き込み]

プログラムで計算した数学関数の値をプロットしたい。C言語の標準ライブラリには、グラフィック表示の機能がないので、計算した数値を外部ファイルに保存して、Excel 上でグラフを描画することにする。

今回保存するファイルの拡張子は csv とする。カンマ区切り形式(comma-separated values)と呼ばれるもので、1行の中での項目の区切りにコンマを記入する。

  1. 187ページのソースコード11.1を参考に、次のプログラムを作れ。
    • 出力ファイル名は "func.csv" とする。
    • 出力する内容の、1行目を以下とする。
      x,sin(x),cos(x)
    • x を -3.5 から +3.5 程度まで 0.1 刻みで変化させながら、x, sin(x), cos(x) の値を、以下のような形式で出力する。(printf()の書式なら "%f,%f,%f\n" である。)
      -3.500000,0.350783,-0.936457
      -3.400000,0.255541,-0.966798
      ...
  2. プログラムを実行して、"func.csv" を生成する。テキストエディタで開いて、内容を確認するとよい。

    +3.5 の行が出力されないことがあるが、浮動小数点演算の誤差のためであるので、気にしなくてよい。→212ページのソースコードA.1「0.1を10回足した結果を表示する」

  3. "func.csv" をExcelで開く。(演習室PCでは、ダブルクリックするだけでよい。)
  4. Excel上で「挿入」→「グラフ」の散布図(のいずれか)を選ぶ。
    func.png

  5. プロットされたグラフができたら、Excel上で「名前をつけて保存」を選んで、ファイルの種類を「Excelブック(*.xlsx)」に変更して、"func.xlsx" の名前で保存する。
    func-xlsx.png

  6. このようにして作ったプログラムを自由に改造し、sin(x), cos(x) を別の数学関数に変更せよ。プログラムを実行して "func.csv" を再生成し、グラフをプロットしなおして "func.xlsx" も保存しなおせ。提出するものは、改造したC言語ソースと、対応する "func.xlsx"である。
    • プログラムを実行しなおすたびに Excel を閉じる必要がある。(そうでないと、ファイルオープンに失敗する。)
    • 数学関数は ax^2+bx+c, 1/x, sin(2*x), floor(x) など、何でもよい。種類を増やしてもよい。
    • プロットする x の範囲や刻み幅は、自由に変更してよい。
    • CSVファイルの1行目が、グラフの系列名に使われるので、数値の説明になるように変更すること。
  • Excel以外にも、グラフ描画に都合のよいソフトはいくつもある。自動生成にはフリーソフトの gnuplot や R のほうが便利。
  • C言語プログラムに限らず、このようにCSV形式を介して別ソフトとの連携を行う機会は多い。

添付ファイル: filefunc.png 275件 [詳細] filefunc-xlsx.png 266件 [詳細] filesin.xlsx 391件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-06-28 (水) 16:18:03