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

演習問題 (中級・上級)

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

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

- 変数と四則演算

問題1

等差数列の項と和を求めるプログラムを書きなさい。

初項 c 、項差 d の等差数列の i 番目の項 ai は次のように求まる。

また、その和は

である。

初項 c と項差 d をあらかじめプログラム中に定義しておき、 先頭から第 5 項までの aisi を出力するようなプログラムにすること。 たとえば、初項が 10 、項差が 5 だった場合、出力は次のようになれば良い。

10 10
15 25
20 45
25 70
30 100

このプログラムでは、 i = 1, 2, 3, ... , 5 について ai の値を求める必要がある。 なるべく漸化式、

を利用して求める方法に挑戦してほしい。 このとき aiai-1 および, sisi-1 はそれぞれ同じ変数で扱う。

ファイル名を ArithmeticalProgression.java としたとき、 プログラムの概略は次のようになる。

第 2 項から第 5 項までは、すべて同じ形のプログラムになるはずである (エディタのコピー・ペーストを使うと良い) 。

一つ前の項の ai-1si-1 がそれぞれ変数 a, s に入っている時に、 それらの値を元にして aisi を求めるにはどうすれば良いかがポイントである。 そして結果を再び a, s に入れるようにする。

問題2

問題1と同じ考え方で、等比数列の項と和を求めるプログラムを書きなさい。

公比を r とすると、漸化式は以下になる。

ai = ai-1 * r
si = si-1 + ai

初項 c と公比 r をあらかじめプログラム中に定義しておき、 先頭から第 5 項までの aisi を出力するようなプログラムにすること。 たとえば、初項が 10 、公比が 5 だった場合、出力は次のようになれば良い。

10 10
50 60
250 310
1250 1560
6250 7810

プログラム名は GeometricProgression とする。 ファイル名は GeometricProgression.java となる。

問題3

問題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 となる。