中間試験の答案・解答例・採点結果を確認し,復習問題に取り組もう. また,前回の授業の続きとして,課題にも取り組もう.
この授業時間中に解答例を提示します. 返却された答案と比較し,間違えた部分については復習しておこう.
もし,採点ミスがあれば,この授業時間中に申し出てください.
いつもの通り,作業用ディレクトリを準備しよう:
$ cd $ mkdir mtr-0622 $ cd mtr-0622
ソースファイル編集方法:
$ vim ソース.c または $ gedit ソース.c &
コンパイル・実行方法:
$ cc ソース.c -o プログラム $ ./プログラム
次の仕様・注意・実行例に従うプログラム sqrt.c を作成せよ.
要求仕様:
注意事項:
実行例:
$ ./sqrt 非負整数 x > 0 √0 = 0 非負整数 x > 2 √2 = およそ 1 非負整数 x > 4 √4 = 2 非負整数 x > 10 √10 = およそ 3 非負整数 x > -1 終了.
試験成績(0 〜 100 の整数)を入力すると, 得点分布表を出力するプログラム histogram.c を作成せよ. ただし,得点欄には1桁目を切り捨てた点数を表示すること. (たとえば,得点 76 を入力すると,70 点台の人数としてカウントされる.) また,人数(データの個数)は無制限とする.
実行例:
$ ./histogram 得点(最後に -1)> 76 83 91 77 ... -1 得点 人数 100 : 2 90 : 6 80 : 8 . . . 10 : 1 0 : 0
得点範囲が 0 点台,10 点台,20 点台,...,100 点の 11 段階なので, 配列は int count[11].
...というか,使えない. 得点を配列に記録しようとすると, 要素数(人数の上限)を事前(ソース作成時)に 固定しなければならなくなる.
詳しく...得点の変数を int point とすると, count[point/10]++ すればよい. これは,たとえば point = 65 のとき, point/10 → 6 なので, つまり,count[6]++ となる. これで 60 点台が 1 人増えることになる. これを全入力データに対して繰り返す.
配列要素は count[0]~count[10] だけ. count[11] とか count[-1] などの範囲外の要素を変更しようとはしないこと.
余裕のある人は,人数を棒グラフ表示してみては?
得点 人数 グラフ 100 : 2 : ** 90 : 6 : ****** 80 : 8 : ******** . . . 10 : 1 : * 0 : 0 :
提出: