#!/usr/koeki/bin/ruby # coding: utf-8 require "./kprintf.rb" point = Array.new while yline = gets if /(\S+)\s+(\d+)\s+(\d+)/ =~ yline # 1個目の() (\S+)→氏名が入る # 2個目の() (\d+)→国語の得点が入る # 3個目の() (\d+)→数学の得点が入る j = $2.to_i # 国語の得点 m = $3.to_i # 数学の得点 point << {"name" => $1, "ja" => j, "math" => m, "total" => j+m} # ついでに合計点も入れておく end end print "--氏名--------------+-国語-+-数学-+-合計--\n" for i in point.sort_by{|x| x["ja"]}.reverse student = i["name"] kokugo = i["ja"] math = i["math"] total = i["total"] printf("%-20s %5d %5d %5d\n", student, kokugo, math, total) end puts "-"*42