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

演習問題(中級・上級)

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

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

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

- 繰り返し

いずれの問題も while 文を使った繰り返しのプログラムとして書きなさい。

問題1

次のような文字からなる図形を描くプログラムを書きなさい。 プログラム名は FlippedTriangle とする。

    *
   **
  ***
 ****
*****

このプログラムは 2 重の繰り返しとして書くこと (単に表示できれば良いというわけではない) 。

問題2

10000 以下の完全数をすべて求めて表示するプログラムを書きなさい。 ファイル名は Perfect.java とする。

完全数とは、 その数の約数 (その数自身は含まない) の和が、 その数自身と等しい自然数である。 例えば、 6 は約数の和が 1 + 2 + 3 = 6 なので完全数である。

このプログラムは、二重の while 文として書くのが適当である。

なお、このプログラムの実行には数秒要する。

問題3

等差数列の項と和を求めるプログラムを書きなさい。 ファイル名は ArithmeticalProgression2.java とする。

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

また、その和は

である。

このプログラムは、 変数と四則演算の回の演習問題のプログラムと同じ働きをするものである。 そのプログラムを参考にし、今回は while 文を使ったプログラムを書くこと。 初項 c と項差 d をあらかじめプログラム中に定義しておき、 第 1 項から第 10 項まで求めるようなプログラムにすること。 たとえば、初項が 10 、項差が 5 だった場合、 出力の最初の数行は次のようになれば良い。

10 10
15 25
20 45
25 70
30 100

問題4

文字 '*' を使って、塗りつぶされた円を描くプログラムを書きなさい。 半径は 10 ('*'を10文字分) とする。 プログラム名は PaintedCircle とする。

点 (x, y) が、原点中心で半径 r の円に含まれているかどうかは、 原点からの距離を比較すればよい。 原点からの距離が r 以下であれば、点は円内にある。

両辺を2乗しても成り立つので

x, y を -10 から 10 までの範囲で値を変化させ、 そのときどきの点(x,y)が上記の条件を満たすか調べ、 満たしていれば '*' を表示するとよい。