第13回:これまでの復習(12/22)

情報処理・演習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がある.
このファイルは,名前 出身地 年齢 西暦 月 日の順にデータが並んでいる.
①構造体を用いて,このファイルを読み込んで画面に出力しなさい.
②現在の年月日を入力すると,年齢を計算し,データの3列目に代入しなさい.(年齢の初期値は0となっている.)
③年齢が上書きされたデータを[result.csv]というファイルに書き出しなさい.
*main文は以下を参考にすること*


#include <stdio.h>

void main()
{
	struct data list[5];	/* 5件のデータを格納する構造体の配列 */
	
	read(list,5);		/* ファイルを読み込む関数 */
	disp(list,5);		/* 構造体の中身を表示する関数 */
	age_calc(list,5);	/* 年齢を計算する関数 */
	disp(list,5);		/* 構造体の中身を表示する関数 */
	write(list,5);		/* ファイルを書き込む関数 */
}

(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をプロットすること
[コンパイルの仕方] bcc32 (ファイル名).c --> bccgl (ファイル名).c とすること

授業終了時までのプログラムと完成した提出用プログラムをoh-meijiシステムを使って提出すること
授業終了時に送るのは出席の確認用である.完成した課題は提出用の回に送ること
(提出期限を厳守し,提出用の回に提出しないと採点を行わない)