#!/usr/koeki/bin/ruby # coding: utf-8 point = Hash.new sum = Array.new(2,0) # sumは配列にする。要素2個、デフォルト値は0 ave = Array.new(2,0) # aveも配列にする。要素2個、デフォルト値は0 while yline = gets if /(\S+)\s+(\d+)\s+(\d+)/ =~ yline # 1個目の() (\S+)→氏名が入る # 2個目の() (\d+)→国語の得点が入る # 3個目の() (\d+)→数学の得点が入る point[$1] = [$2.to_i, $3.to_i] # 配列を代入 sum[0] += point[$1][0] # 国語 sum[1] += point[$1][1] # 数学 end end ave[0] = sum[0].to_f/point.length # 国語の平均点 ave[1] = sum[1].to_f/point.length # 数学の平均点 print "--氏名--------------+-国語-+-平均との差--+-数学-+-平均との差--\n" for student, pts in point # pts には、[国語の点, 数学の点] という配列が入っている kokugo = pts[0] # ptsの第0要素が国語の点 math = pts[1] # ptsの第1要素が数学の点 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])