講義資料および以下のサンプルプログラムを参考にして、課題3-1,3-2,3-3のプログラムをそれぞれ作成し実行せよ。TACTを使用した課題の提出については、各設問の指示に従うこと。
(実際にコンパイル・実行してエラーのないことを確かめておくこと。)
作成したプログラムは、TACTのテキスト入力欄にcopy & pasteするか、ファイルを添付するか、どちらかで提出せよ。
Sample 1-1
0 - 9までの整数を表示させるプログラム(for を使用)
#include <stdio.h>
int main(void)
{
int i;
for(i=0;i<10;i++){
printf("%d\t",i);
}
printf("\n"); /*最後に改行*/
return 0;
}
Sample 1-2
0 - 9までの整数を表示させるプログラム(while を使用)
#include <stdio.h>
int main(void)
{
int i;
i=0;
while(i<10){
printf("%d\t",i);
i++; /* i=i+1 と同じ */
}
printf("\n"); /*最後に改行*/
return 0;
}
Sample 2
ターミナルから数値を読み込み,正/0/負を判定し出力するプログラム.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char buf[50];
int i;
printf("please input signed integer i = ");
fgets(buf,sizeof(buf),stdin);
if (sscanf(buf,"%d",&i) != 1) {
fputs("input error\n", stderr);
exit(-1);
}
if(i>0){ /* iが正の場合 */
printf("i=%d is positive\n",i);
}
else if(i==0){ /* iが0の場合 */
printf("i is %d\n",i);
}
else { /* 上記以外(すなわち負) */
printf("i=%d is negative\n",i);
}
return 0;
}
課題3-1
(Sample-1参照)
for( ; ; )構文を用いて,以下の値 A,B,C,D を求めるプログラムを作成し,実行せよ.
但し,D は倍精度で計算せよ.
実際に作成したプログラムを使って計算したA,B,C,Dの値と,Dを計算したソースコードを提出せよ.
課題3-2
(Sample-2参照)
2次方程式 a x
2+b x+c=0 の実数係数 a, b, c を入力し,解 xを求める
プログラムを作成し,そのソースコードを提出せよ.
このプログラムを動かし,異なる2実数解、重解、複素数解のそれぞれで正しく動作することを確認せよ.
(なお表示形式は,「異なる2実数解」のときは例として "x=1, 2",
「重解」のときは"x=4 (double)",「複素数解」のときは"x=5+6i, 5-6i"
のような形式にすること. ただし,「純虚数解」の際の"x=0+1i, 0-1i" となってもよい.)
このプログラムの作成・コンパイルの際、以下の点を参考にすること。
-
平方根を求める関数 sqrt() を用いるために, #include <math.h> を加える.
-
実数は double の型を用いること.この時キーボードからの入力時の型指定は, %lf を用いること.
-
出力の整形のため %-10.4f などを用いる. ここで "-" は左詰め,"10" は表示桁数,
".4" は小数点以下の表示桁数を示す.
課題3-3
(関数の呼び出しは講義資料を見よ)
与えられた 5 個の実数(倍精度)について,その平均 (average) を戻り値とする関数,
その分散 (variance) を返り値(戻り値)とする関数(いずれもユーザ定義の関数)を それぞれ作り,
キーボードより入力された 5 個の実数の平均・標準偏差を、これらの関数
を用いて求めるプログラムを作成し,ソースコードを提出せよ.
但し,平均をμとすると標準偏差σは以下で与えられる.
(σ
2の平方根を取ること)
σ
2 = < (x - μ)
2 > = < x
2 > - μ
2
注: 引数が(変数) 5 個の関数でよい.
(上級者向け: ポインターを引数にすることもできる. func(double *x))
課題3-4 (追加課題; 必答ではないが取り組んだ場合は加点)
まず整数 n を入力する. 次に実数を n 個入力し,その n 個の実数の平均μ,
分散σ
2,最大値 max,最小値 min を表示するプログラムを作成せよ.
このプログラムを使って,
n = 10, 実数が 185, 64, 77, 496, 72, 436, 745, 9, 236, 121
の場合について実行した結果をソースプログラムとともに示せ。
できれば,配列など n 個分の変数を用意することなしに 計算できるプログラムにすること。