第9回: (6/6)

先週の中間テストは,できましたか?

先々週の演習と,先週の中間テストを もう一度確認しましょう。


(4−1) 実数型配列の要素をキーボードから10個入力し,配列の中身を表示するプログラムを完成させなさい。

void input(float p[], int n)/*キーボードからの入力*/
{
	int i;
	
	for(i=0;i<n;i++){
		printf("%d番目のデータ=", i);
		scanf("%f",????);
	}
}

void output(float p[], int n)/*配列の表示*/
{
	int i;
	
	for(i=0;i<n;i++){
		printf("%d番目のデータ=%f¥n", i, ??????);
	}
}

void main()
{
	float data[10];
	
	input(????, ????);
	
	output(????, ????);
}

(4−2) 実数型配列の要素をファイルから読み取り,平均値,最大値と最小値を算出する関数を作成せよ。


void main()
{
    int n; /* 配列のデータ数 */
	float data[1000];	/* 配列 */
    float ave, max, min;
	
    n = loaddata("sin.csv", data);  /* ファイルから配列にデータを読み込み,データ数を返す関数 */

    printf("平均値 = %f¥n", average(data, n));  /* 平均値を算出する関数 */

    max_min(data, n, &max, &min);  /* 最大値と最小値を算出する関数 */
 
    printf("最大値 = %f, 最小値 = %f¥n", max, min);
}

(4−3) これまでに作成した関数を利用して,ファイルから読み込んだデータを大きい順に並べ替えて,画面に表示するプログラムを作成せよ。

I.次の(1)〜(6)の関数定義部分を答えなさい。

(1) 角度(実数)を引数とし,ラジアン(実数)に変換して返す関数 radi。

(2) 2個の実数を引数とし,そのうちの小さい方の値(実数)を返す関数 min。

(3) 引数の整数が素数かどうか判定し,素数ならば戻り値として整数の1を返し,素数でなければ整数の0を返す関数 prime。素数とは,1とその数以外に約数を持たない数である。

(4) 要素数 n 個(整数),実数型配列 a を引数とし,その最小値(実数)を返す関数 min_array。

(5) 要素数 n 個(整数),実数型配列 a を引数とし,その平均値(実数)を返す関数 ave_array。

(6) ファイル名と実数型配列 a を引数とし,配列にファイルからデータを読み込み,データ数(整数)を返す関数 loaddata。ファイルが開けない場合は 0 を返す。

II. 次の(あ)〜(え)のプログラムを作成しなさい。

(あ) キーボードから文字列(100文字以下とする)を入力すると,大文字と小文字がそれぞれ何文字含まれているかを画面に表示するプログラムを作成せよ。

(い) 角度0度から360度まで15度毎の,角度,ラジアン,sinの値を画面に表示するプログラムを作成せよ。

(う) 2から10000までの整数の中から素数を見つけ出し,ファイル”prime.txt”に一行に1個書き出すプログラムを作成せよ。

(え) 100個の実数データが一行に1個書かれているファイル "testdata.txt" からデータを配列に読み込み,最小値と平均値を計算して画面に出力するプログラムを作成せよ。