第13回:これまでの復習(07/04)

情報処理・演習2の授業では,これまでに「文字列」,「関数」,「ファイル入出力」,「グラフィックス」,「構造体」を扱いました.これで,ほぼC言語の文法はおしまいです.後半は,これまでに習ったことを利用して,実用的なプログラムを作成していきます.

今回は全範囲の復習です,内容を完璧に理解しましょう.わからないところがあったら,前回までの授業用ホームページを参照してください.


第12回演習:解答例


演習課題

(1)【関数とポインタ】30件の数字データ(右クリック-->[対象をファイルに保存] )30data.txtを読み込み,値を大きい順に並び替え,別のファイル(30data_sorted.txt)に出力せよ.

#include <stdio.h>

/*ファイル入力の関数*/
 _____ read(_____)	
{
	 ****** 
}

/*並べ替えの関数*/
 _____ sort(_____)
{
	 ****** 
}

/*ファイル出力の関数*/
 _____ write(_____)	
{
	 ****** 
}

/*メイン関数*/
void main()
{
    int data[30];

    read(data,30);
    sort(data,30);
    write(data,30);
}

(2)【構造体】5件の名前,出身地,生年のデータファイル(右クリック-->[対象をファイルに保存] )data.txtがある.
このファイルは,名前 出身地 年齢 西暦 の順にデータが並んでいる.
(a) 構造体を用いて,このファイルを読み込んで画面に出力しなさい.
(b) 2012年と生年との差を計算し,データの3列目に代入しなさい.(年の初期値は0となっている.)
(c) 年が上書きされたデータを[result.csv]というファイルに書き出しなさい.

(3)【グラフィックス】初速v0=50(m/s),角度θ=45°で放たれた球が,地面に衝突し跳ね返り続ける球の軌跡をグラフィックスを用いて描きなさい.
ただし,はね返り係数e=0.8,重力加速度g=9.81(m/s2)とし,空気抵抗は無視する.また,斜方投射の式は以下を参照すること
水平方向の距離 x=(v0×cosθ)×t ,鉛直方向の距離 y=(eJ×v0×sinθ)×t-g×t2/2 (t : 時間 ,J : 衝突回数)
グラフィックスの回を参考に,xとyをプロットすること