解答は earth.mlab.im.dendai.ac.jp の /home/submit/1I-Computer2/[初級の出題日]/[学籍番号] のディレクトリに提出しなさい。 ソースファイル (〜.java) のみを提出すること。
ファイルの送信には ftp ソフトを用いる。 Linux の gFTP を使った提出方法 (実験室のマニュアル) を参照すること。
等差数列の項と和を求めるプログラムを書きなさい。
初項 c 、項差 d の等差数列の i 番目の項 ai は次のように求まる。
また、その和は
である。
初項 c と項差 d をあらかじめプログラム中に定義しておき、 先頭から第 5 項までの ai と si を出力するようなプログラムにすること。 たとえば、初項が 10 、項差が 5 だった場合、出力は次のようになれば良い。
10 10 15 25 20 45 25 70 30 100
このプログラムでは、 i = 1, 2, 3, ... , 5 について ai の値を求める必要がある。 なるべく漸化式、
を利用して求める方法に挑戦してほしい。 このとき ai と ai-1 および, si と si-1 はそれぞれ同じ変数で扱う。
ファイル名を ArithmeticalProgression.java としたとき、 プログラムの概略は次のようになる。
第 2 項から第 5 項までは、すべて同じ形のプログラムになるはずである (エディタのコピー・ペーストを使うと良い) 。
一つ前の項の ai-1 と si-1 がそれぞれ変数 a, s に入っている時に、 それらの値を元にして ai と si を求めるにはどうすれば良いかがポイントである。 そして結果を再び a, s に入れるようにする。
問題1と同じ考え方で、等比数列の項と和を求めるプログラムを書きなさい。
公比を r とすると、漸化式は以下になる。
ai = ai-1 * r
si = si-1 + ai
初項 c と公比 r をあらかじめプログラム中に定義しておき、 先頭から第 5 項までの ai と si を出力するようなプログラムにすること。 たとえば、初項が 10 、公比が 5 だった場合、出力は次のようになれば良い。
10 10 50 60 250 310 1250 1560 6250 7810
プログラム名は GeometricProgression とする。 ファイル名は GeometricProgression.java となる。
問題2で作成したプログラムの以下の出力結果は、あまり見やすいとは言えない。
10 10 50 60 250 310 1250 1560 6250 7810
項の値と和の値を表示する際に、 各行が第 n 項のものか表示するようにすると、格段にわかりやすくなる。
Geometric Progression(a1=10, r=5) n=1: a=10, s=10 n=2: a=50, s=60 n=3: a=250, s=310 n=4: a=1250, s=1560 n=5: a=6250, s=7810
int型の変数 n を用意し、その n を 1 ずつ増やしていくことで、上記の出力を実現しなさい (自分の頭の中で1増やした値を代入しないこと)。
プログラム名は GeometricProgression2 とする。 ファイル名は GeometricProgression2.java となる。