Ex14

From Prog0

Jump to: navigation, search

演習第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時

提出は〆切前であれば何度でもやり直すことができます。再提出すると、前に提出したファイルは新しい内容で上書きされます。

Personal tools