第11回:これまでの復習 2 (12/9)

今回は「関数」,「ポインタ」,「構造体」,「グラフィックス」の復習と二次元配列の勉強です,内容を完璧に理解しましょう.わからないところがあったら,前回までの授業用ホームページを参照してください.


第10回演習の解答例


演習課題

(1)【構造体】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);		/* ファイルを書き込む関数 */
}

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


(3)【二次元配列】ファイルから4×4の2次元行列Aを読み込み画面に表示するプログラムを,以下を参考に関数を用いて作成せよ.
行列は、次のファイルを(右クリック-->[対象をファイルに保存])で作成したプログラムと同じフォルダに入れること.
   [Amat.txt],


#include <stdio.h>
 
/*4×4の行列をファイルから読み込む関数*/
void read_matrix(char filename[], float mat[4][4])
{
	int i,j;
	FILE* fp;
	
	………
}
 
/*4×4の行列を表示する関数*/
void print_matrix(float mat[4][4])
{
	………
}
 
/*メイン関数*/
void main()
{
	float Amat[4][4];
	char filename1[]="………";
	
	read_matrix(…,…);
	
	print_matrix(…);
 
}
 


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