第14回:これまでの復習 2 (1/12)

明けましておめでとうございます.もうすぐテストがあります。しっかり復習をしてテストに備えてください.

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


第13回演習の解答例


演習課題

(1)【構造体・関数】5件の名前,身長(cm),体重(kg)のデータファイル(右クリック-->[対象をファイルに保存] )data1.txtがある.
このファイルは,名前 身長(cm) 体重(kg) の順にデータが並んでいる.
①構造体を用いて,このファイルを読み込んで画面に出力しなさい.
②このデータを使い関数を使ってBMIをデータの4列目に代入しなさい.ただし,BMI=体重(kg)/{身長(m)×身長(m)}でもとめること.また身長は(m:メートル)での計算に注意すること.
 (BMI初期値は0となっている.)
③BMIが上書きされたデータを[bmi.csv]というファイルに書き出しなさい.
*main文は以下を参考にすること*


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

(2)【文字列】char s[]="Meiji University"として,この文の中にいくつ"i"が含まれているか数えるプログラムを作成せよ.


(3)【関数とポインタ】2~1000までの全ての素数を表示するプログラムを作成せよ.ただし素数の求める部分は関数を用いること


*また以下を参考にすること*

エラトステネスのふるいのアルゴリズム
①2~nの数をすべて「ふるい」に入れる.
②「ふるい」の中で最小値を素数とする.図の▼印
③今求めた素数の倍数をすべて「ふるい」からはずす.図の斜線部の数
④②~③をnまで繰り返し「ふるい」(斜線が引かれなかった)に残った数が素数である.

(4)【二次元配列】ファイルから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システムを使って提出すること.
(提出期限を厳守し,提出用の回に提出しないと採点を行わない)