#!/usr/koeki/bin/ruby # coding: utf-8 require "./kprintf.rb" point = Array.new # 個別ハッシュを格納する全体配列 sum = Array.new(2,0) # sumは配列にする。要素2個、各初期値は0 ave = Array.new # aveも配列にする。 while yline = gets if /(\S+)\s+(\d+)\s+(\d+)/ =~ yline # 1個目の() (\S+)→氏名が入る # 2個目の() (\d+)→国語の得点が入る # 3個目の() (\d+)→数学の得点が入る name, ja, math = $1, $2.to_i, $3.to_i point << {"name" => name, "ja"=>ja, "math"=>math} sum[0] += ja # 国語 sum[1] += math # 数学 end end ave[0] = sum[0].to_f/point.length # 国語の平均点 ave[1] = sum[1].to_f/point.length # 数学の平均点 print "--氏名--------------+-国語-+-平均との差--+-数学-+-平均との差--\n" for i in point # i には、"name", "ja", "math" をキーとするハッシュが入って来る student = i["name"] # iのキー"name"に対応する値が氏名 kokugo = i["ja"] # iのキー"ja"に対応する値が国語の点 math = i["math"] # iのキー"math"に対応する値が数学の点 printf("%-20s %5d %5.1f %5d %5.1f\n", student, kokugo, kokugo-ave[0], math, math-ave[1]) end puts "-"*62 printf("%-20s %5.1f%s%5.1f\n", "平均点", ave[0], " "*15, ave[1])