コンピュータ基礎および演習II

演習問題(中級・上級)

解答は earth.mlab.im.dendai.ac.jp/home/submit/1I-Computer2/[初級の出題日]/[学籍番号] のディレクトリに提出しなさい。 ソースファイル (〜.java) のみを提出すること。

ファイルの送信には ftp ソフトを用いる。 Linux の gFTP を使った提出方法 (実験室のマニュアル) を参照すること。

なお、中級・上級問題は楽しめる範囲で取り組めばよい。

問題1

20 人の受講生に対して行われた、 10 点満点の小テストの点数は次のようであった。

8 6 5 9 10 5 3 8 9 7 7 4 7 8 4 10 9 9 3 2

このテストの点数ごとの頻度分布を出力するプログラムを書きなさい。 プログラム名は Frequency とする。

ここでの頻度分布とは、 各点数ごとにその点数をとった人が何人いるかを示す表である。 このプログラムを実行した結果の最初の数行は次のようになるはずである。 左の数字が点数の分布、右の数字がその点数をとった人数である。

0: 0
1: 0
2: 1
3: 2
4: 2
5: 2

この問題では、 20 人分の点数を格納する配列と、 0 点から 10 点のそれぞれの値が何回現れたかを数える配列の 2 つを用いるのが適当である。

何回現れたかを数える配列を仮に count とすると、 count は 0 から 10 までの 11 個の要素からなる配列となる。 点数 v (0 ≦ v ≦ 10) の出現した回数を count[v] で数えればよい。

問題2

サイコロを3つふり、少なくとも2つのサイコロの目が一致する確率を求めなさい。 プログラム名は Sai とする。

繰り返しによってすべての場合の目の並びを求め、 問題文の条件を満たす目の並びの数を数えることにより求めることができる。

サイコロ 1 個をふって出る目は 1 から 6 の 6 通りである。 これを 1 つの for 文で生成する。 for 文を 3 重にすれば、 すべての目の並びが繰り返しの中に現れるようにすることができる。 この中から、少なくとも 2 つの目が一致する回数を求めればよい。

なお、これを数学の問題として解くなら以下のようになる。

すべての目の並び - 目がすべて異なる場合の並び
1 - 1 x (5 / 6) x (4 / 6) = 1 - 20 / 36 = 1 - 120 / 216 = 96 / 216 = 0.44

問題3

あなたは大学を卒業後、投資家となり、 資金 1,000 万円をある率で運用しようとしているとする。

元本 1000 万円を以下の3とおりの年利による複利で運用したとき、 10 年後の元利合計はそれぞれいくらになるか表示するプログラムを書きなさい。 プログラム名は Compound とする。

なお、元利合計とは元本と利息の合計のことである。

  1. 不動産投資 8%
  2. 国内定期預金 0.05%
  3. 株式投資失敗で元本割れ -2%

複利計算の場合、 1 年ごとに利息が元金に加算されていく。 すなわち、例えば、 不動産投資での 1 年目の利息は 1000万円 × 8% = 80 万円となり、 元金と利息の合計 1000 万円 + 80 万円 = 1080 万円が 1 年目の元利合計である。 同様にして 2 年目は 1080万円 × 8% = 86.4 万円が利息であり、 1080万円 + 86.4 万円 = 1166.4 万円が 2 年目の元利合計となる。 これを繰り返すことにより、 10 年後の元利合計を求めることができる。