データファイルのファイル名を,コマンドライン引数から受け取る。
合計点を記録するための変数(たとえば sum) をゼロに設定する.
最高点,最低点を記録するための変数(たとえば max, min ) を適切な値に設定する.
データ行の数を数えるカウンタをゼロに設定する。
ファイルをオープンする。
ファイルを1行ずつ読み込むためのループを作る。
1行読んでは,カンマで区切られたデータを分離し, 英数国3教科の点数の和(このための変数には,上述のsum は当然使えない.適当に短い変数名を使えばよい)を求める。
その点数と最高点を比較して,必要な処理を行う。 最低点についても同様。
3教科の点数の和を合計点に加算する.
カウンタを増やす。
ループが終了したら,平均を計算する。
実行例に従って,平均は小数第2位(ここでは printf を使う必要があることに注意!)まで,最高点と最低点は整数値で出力する。 行末には改行を入れ
この流れでプログラムを書いたつもりだったのですが、
うまく走りません。
どこが違うのでしょうか。
datafile = ARGV[0]
sum = 0
max = 100
min = 1000
count = 0
File.open(datafile) do |fp|
#while line = fp.gets
fp.each_line do |line|
line = line.chomp!
c = line.split(",")
goukei = c[2].to_f + c[3].to_f + c[4].to_f
if max <= goukei then
max = goukei
end
if min >= goukei then
min = goukei
end
sum += goukei
count += 1
end
#end
end
#p sum
#p count
average = sum /count
printf("平均点 %3.2f\n",average)
printf("最低点 %3d\n",max)
printf("最低点 %3d\n",min)
回答2件
あなたの回答
tips
プレビュー