ひとつ問題がある。データ1行目の後ろのほうに -0.0 という値が入ってる。 これをカウントすべきかどうかで平均値が変わる。 計測器によっては -0.0 は 0 から -0.1 を含まない領域の値を示していることがある。 題意からすると、これは負で取り除くべきデータということになる。 しかし、Ruby は 0 も 0.0 も -0.0 も同じゼロとして扱うから、特別に判断処理を入れない限り区別できない。 以下、区別しないスクリプト。 区別したい場合は if のとこを if i >= 0 && i.to_s != '-0.0' then に書き換える。
ar = [ 4.2,29.8,5.1,19.9,3.4,15.3,11.4,1.1,24.1,28.7,0.0,30.2,-0.0,41.2,8.3, 26.8,27.4,0.5,26.2,35.8,33.7,2.0,9.4,36.8,33.2,7.8,21.6,42.7,31.4,9.3, 16.9,9.4,39.6,-0.7,40.4,43.8,26.6,16.1,38.7,4.5,14.1,4.1,7.8,10.5,26.1, 44.9,26.7,17.6,34.2,10.9,33.6,34.2,28.1,40.6,13.7,5.4,13.2,15.8,22.5,36.5, 2.0,13.1,11.2,-1.7,7.4,39.6,29.5,19.7,21.7,16.3,12.3,41.5,-2.8,13.5,40.9, -1.7,26.9,6.7,0.7,43.8,43.0,17.4,6.9,35.4,36.2,27.6,10.6,39.8,6.4,31.3, 13.7,0.9,20.2,6.4,36.0,31.9,36.4,-1.3,-3.2,-3.2] # 以下の部分を適当に補って作成して,下のフォームに記入しなさい。 count = 0 sum = 0.0 for i in ar if i >= 0 then count = count + 1 sum = sum + i end end print "有効なデータの数:#{count}\n" print "平均値:#{sum / count}\n"