Ex14
From Prog0
演習第14回
Contents |
演習問題
以下の問題を解いて期限内に解答を提出してください。
出席確認
- 演習時間中に出席確認をLMS上の「演習出欠」で行ってください
- 出席確認用のパスワードは演習時間のどこかのタイミングで提示されます
A問題
A-1 組み合わせの数
ファイル名: ex14a1.c
n 個のものから r個取り出す組み合わせの数 nCr を求めるプログラムを作成しなさい. ただし,n は 0 から 5 までの整数が入力されるとし,r は 0 から n までの整数が入力されるものとする. nCr の計算は int combi (int n, int r) という関数 (引数: n と r,返り値: nCr) を用いて計算すること.
ここで,
nCr = n! / (r! (n-r)!)
である.n! は n の階乗 (factorial) を表す.階乗の計算には以下の関数 fact () を用いても良い.
[関数 fact ()]
int fact ( int n ) { int f; for (f=1; n>0; n--) f *= n; return f; }
[実行例]
%./a.out
nCr の n と r とを入力してください: 2 1
2C1 = 2
%./a.out
nCr の n と r とを入力してください: 5 2
5C2 = 10
%
B問題
B-1 気温と気候区分
ファイル名: ex14b1.c
キーボード入力から1月~12月の各月の平均気温を読み込んで、その中の最高値(最暖月平均気温)、最低値(最寒月平均気温)、平均、最高値と最低値の差(年較差) を求めて出力し、さらにその土地の気候区分がA(熱帯)、C(温帯)、D(亜寒帯、冷帯)、E(寒帯)のどれに分類されるか調べて出力するプログラムを作成しなさい。 気温(摂氏)は小数で与えるものとする。
[気候区分(ケッペン)]
- A(熱帯): 最寒月平均気温が摂氏18度以上
- C(温帯): 最寒月平均気温が -3度以上18度未満、かつ最暖月平均気温が10度以上
- D(亜寒帯): 最寒月平均気温が -3度未満、かつ最暖月平均気温が10度以上
- E(寒帯): 最暖月平均気温が10度未満
- 本来は、降水量によってB(乾燥帯;ステップ・砂漠気候)かどうかの判定もあるが、ここでは省略する。
[実行例]
% ./a.out
1月~12月の気温(摂氏)を入力してください。
5.4 6.1 9.4 14.3 18.8 21.9 25.7 26.9 23.3 18.0 12.5 7.7
最高: 26.9 最低: 5.4
平均: 15.8 年較差: 21.5
気候区分: C(温帯)
% ./a.out
1月~12月の気温(摂氏)を入力してください。
-3.2 -2.7 1.1 7.3 13.0 17.0 21.1 22.3 18.6 12.1 5.2 -0.9
最高: 22.3 最低: -3.2
平均: 9.2 年較差: 25.5
気候区分: D(亜寒帯)
% ./a.out
1月~12月の気温(摂氏)を入力してください。
18.9 19.4 20.9 23.4 25.9 28.4 29.6 29.4 28.2 26.0 23.6 20.5
最高: 29.6 最低: 18.9
平均: 24.5 年較差: 10.7
気候区分: A(熱帯)
% ./a.out
1月~12月の気温(摂氏)を入力してください。
-18.2 -17.4 -14.1 -8.8 -3.2 1.4 5.3 6.4 3.5 -2.0 -8.7 -15.1
最高: 6.4 最低: -18.2
平均: -5.9 年較差: 24.6
気候区分: E(寒帯)
%
上記の実行例ではそれぞれ、東京、札幌、石垣島、富士山のデータ(1991-2020平年値)を入力として使用した。
Extra問題
E-1 三角形の面積
ファイル名: ex14e1.c
3点の座標 (x1,y1),(x2,y2),(x3,y3) が入力されたとき、 この3点を頂点とする三角形の面積を求めるプログラムを作成しなさい。
[実行例]
%./a.out
3点の座標 (x0, y0), (x1, y1), (x2, y2) を入力してください
x0, y0: 0 0
x1, y1: 7 8
x2, y2: 13 29
三角形の面積: 49.500000
%./a.out
3点の座標 (x0, y0), (x1, y1), (x2, y2) を入力してください
x0, y0: -1.5 4.3
x1, y1: 5.2 7.8
x2, y2: 2.1 -3.6
三角形の面積: 32.765000
課題提出上の注意事項
解答ファイルはmenuコマンドを使って提出してください。以下のようにmenuコマンドを実行し、表示されるメッセージに沿って操作すること。
%
~prog0/bin/menu
menuコマンドは、解答ファイルが ~/Prog0/Ex## のディレクトリに指定されたファイル名で置かれているものとして処理します。正常に提出された場合は ○ が、何らかのエラーが生じた場合は × が表示されます。
解答の提出期間は以下のとおりです。
問題 | 提出受付開始 | 提出〆切 |
---|---|---|
A問題 | 演習日の6日前の午後9時 | 演習終了時刻 |
B, Extra問題 | 演習日の6日前の午後9時 | 演習日の6日後の午後9時 |
提出は〆切前であれば何度でもやり直すことができます。再提出すると、前に提出したファイルは新しい内容で上書きされます。