7/21 Java プログラミング第3回,課題出題
前回の補足,復習
- 前回の講義の際に判明したはいぱーワークブックの誤りは修正してもらった.
- ネットワークニュースで,はいぱーワークブックの誤りの指摘があって,
作成した川合先生に報告して直してもらった.このような指摘は加点対象にす
るので(ただし,先着1名のみ),どんどん報告して欲しい.
- 第21章 プログラミングで「たくさんの数…配列」が加わった.
- はいぱーワークブックの課題の締切りは7月末
今回の目標
課題問題
次の問題のうち1題だけ選んで,解答しなさい.ただし,採点に際しては,各
問題の正解者(完全に正解でなくてもある程度のレベルに達した人)のうち先着
10名は加点する.解答状況は,問題ごとにWWWで見られるようにしてある.
- 締切は9月4日(土)
- 課題はメールで提出する.どの課題問題を選んだかによって,メールの
提出先のメールアドレスが異なるので,注意すること.
- メールが届いたかどうかは提出者リストで確認することができる.間違っ
たメールアドレスに投稿してしまった時は,正しいメールアドレスに投稿し直
すこと.
- メールには学生証番号,氏名,作成したプログラム,プログラムの実行
結果,10行程度の解説を入れること.
- 課題に関する質問は他の人の参考になるので,なるべく
lectures.g99.jousho-ktanaka-S-Wed-2 に投稿すること.
- 夏休み中の情報教育棟の開館については 試験期間,夏期休業中の開館時間の変更および夏期閉館について を参考にするように.
-
課題問題1
分数クラスを拡張して,四則演算すべてがおこなえるようにしなさい.0によって
除算をした際のエラー処理は不要とします.
((30/251+52)*5)/(24/31-5) を計算し,浮動小数点を使った結果と一致してい
ることを確かめなさい.
- 課題の提出先のメールアドレスは,report07211@tanaka.ecc.u-tokyo.ac.jp
- 課題提出者リスト
ヒント
結果を既約分数(分子と分母が互いに素)にするようにプログラムを作ると加
点します.既約分数にするにはユークリッドの互除法で
課題問題2
複素数クラスを作成して,四則演算をおこなえるようにしなさい.0によって
除算をした際のエラー処理は不要とします.四則演算を含む適当な例を作成し,
実行しなさい.
- 課題の提出先のメールアドレスは,report07212@tanaka.ecc.u-tokyo.ac.jp
- 課題提出者リスト
ヒント
実部(real part)と虚部(imaginary part)を表す2つの浮動小数点で複素数を
表します.
i * i = -1
(a + b * i) + (c + d * i) = (a + c) + (b + d) * i
(a + b * i) * (c + d * i) = (a*c-b*d)+(a*d+b*c) * i
1 / (c + d * i) = (c / ( c*c + d*d)) - (d / ( c*c + d*d)) * i;
課題問題3
100000以下の完全数をすべて求めるプログラムを書き,実行しなさい.
完全数とは,自分以外のすべての約数(1を含む)の和が自分と等しくなる数.
良く知られた完全数として,
6 = 1+2+3
がある.
- 課題の提出先のメールアドレスは,report07213@tanaka.ecc.u-tokyo.ac.jp
- 課題提出者リスト
ヒント
約数リスト を参考にしますが,そこのプログラムでは1を約数から除いて
いるので注意してください.
完全数に関する整数論の成果(メルセンヌ素数など)を使いたい人は証明を付
記して使っても構いませんが,数学の課題ではないので特に高い評価にはなり
ません.
課題問題4
2の100乗を計算するプログラムを元に,100の階乗(100! = 100 * 99 * ...
* 1)を計算して10進で表示するプログラムを作成しなさい.実行結果も示すこ
と.
- 課題の提出先のメールアドレスは,report07214@tanaka.ecc.u-tokyo.ac.jp
- 課題提出者リスト
ヒント
2の100乗の時よりも桁数を多めに確保しておかないと溢れる可能性があります.