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の北条さん、前田さん、渡辺渉子