1.実施した課題の番号
 2番です。

2.作成したプログラム

#!/usr/koeki/bin/ruby
# -*- coding: utf-8 -*-

score = []
x = 0
y = 0

top = 1

while line = gets
  score[x] = line.to_i
  x += 1
end

score.sort!
score.reverse!

while top <= 20
  printf("%2d位     %d点\n",top,score[y])
top += 1
y += 1
end

3.プログラムの実行結果

sime{xxxxxxx}% ./report4b.rb test.dat                           [~/program]
 1位     274点
 2位     257点
 3位     250点
 4位     249点
 5位     247点
 6位     246点
 7位     243点
 8位     240点
 9位     235点
10位     232点
11位     231点
12位     230点
13位     229点
14位     227点
15位     226点
16位     221点
17位     220点
18位     217点
19位     213点
20位     212点

4.プログラムの説明

4行目 scoreが配列であることを表す。

5行目 xは上のwhile-endのインデックスであることを表し、初期値は0とする。

6行目 yは下のwhile-endのインデックスであることを表し、初期値は0とする。

8行目 topは順位として初期値を1と設定する。

10行目 whileでテストの得点を繰り返し読み取る条件をつける。

11行目 12行目 xは初期値を0としているため、最初は0が代入されるが、繰り返
しを続けるごとに1ずつ増えながら代入されることを表す。

13行目 10行目の繰り返しが終わることを表す。

15行目 sort!を使って得点が少ない順に並べ替えることを表す。

16行目 reverse!を使って15行目で並べ替えたものを逆順にすることを表す。

18行目 whileで順位が20位以内になるよう繰り返しを行う条件をつける。

19行目 printf文で""内の文字をtopとscoreを使って表示する。

20行目 21行目 topとyは1ずつ増えることを表す。

22行目 18行目の繰り返しが終わることを表す。

5.感想
 授業で理解が出来なかったので、
プログラムを作るのはTAの北条さんに手伝ってもらいました。
毎回新しいプログラムを作りますが、説明が前より自力で
出来ていると思いました。知識が増えればおもしろさも増すと思いました。

6.参考にした人
TAの北条さん、前田さん、渡辺渉子