Back to text page
情報科学概論 Aクラス 宿題 2003.7.22 解答例
授業で使用した成績データを元に,学生ごとの平均点が高い順にリストを並べ替
え,学生の名前と各教科の成績,平均点を出力するスクリプトを作成し,メールに添付して提出すること.
ヒント
この配列は2次元の配列を使用している.学生のデータごとの入れ換えは第1番目
の指数による値の交換で実現できる.すなわち,
data[3], data[4] = data[4], data[3]
|
のように,変数で行った値の入れ換えが,ここでは個人データ配列ごとの入れ換えに
相当する.上の例では,KiraとDearkaのデータが入れ換えられる.
解答例
data = []
sum_e = 0
sum_m = 0
sum_p = 0
sum = 0
i = 0
while line = ARGF.gets
data[i] = line.chomp.split(/,/)
i += 1
end
data[0][4] = "Average"
for i in 0..4
printf "%11s\s", data[0][i]
end
printf "\n"
for i in 1..10
data[i][4] = 0
end
for i in 1..10
for j in 1..3
data[i][4] += data[i][j].to_f
end
end
for i in 1..10
for j in i..10
data[i], data[j] = data[j], data[i] if data[i][4] < data[j][4]
end
end
for i in 1..10
printf "%-11s\s", data[i][0]
for j in 1..3
printf "%11s\s", data[i][j]
end
printf "%11.1f\n", data[i][4] / 3
end
for i in 1..10
sum_e += data[i][1].to_f
sum_m += data[i][2].to_f
sum_p += data[i][3].to_f
sum += data[i][4].to_f
end
printf "%-11s\s%11.1f\s%11.1f\s%11.1f\s%11.1f\n", data[0][4], sum_e/10, sum_m/10, sum_p/10, sum/30
|
情報科学概論 Bクラス 宿題 2003.7.22 解答例
授業で使用した成績データを元に,学生ごとの平均点が低い順にリストを並べ替
え,学生の名前と各教科の成績,平均点を出力するスクリプトを作成し,メールに添付して提出すること.
ヒント
この配列は2次元の配列を使用している.学生のデータごとの入れ換えは第1番目
の指数による値の交換で実現できる.すなわち,
data[3], data[4] = data[4], data[3]
|
のように,変数で行った値の入れ換えが,ここでは個人データ配列ごとの入れ換えに
相当する.上の例では,KiraとDearkaのデータが入れ換えられる.
解答例
data = []
sum_e = 0
sum_m = 0
sum_p = 0
sum = 0
i = 0
while line = ARGF.gets
data[i] = line.chomp.split(/,/)
i += 1
end
data[0][4] = "Average"
for i in 0..4
printf "%11s\s", data[0][i]
end
printf "\n"
for i in 1..10
data[i][4] = 0
end
for i in 1..10
for j in 1..3
data[i][4] += data[i][j].to_f
end
end
for i in 1..10
for j in i..10
data[i], data[j] = data[j], data[i] if data[i][4] > data[j][4]
end
end
for i in 1..10
printf "%-11s\s", data[i][0]
for j in 1..3
printf "%11s\s", data[i][j]
end
printf "%11.1f\n", data[i][4] / 3
end
for i in 1..10
sum_e += data[i][1].to_f
sum_m += data[i][2].to_f
sum_p += data[i][3].to_f
sum += data[i][4].to_f
end
printf "%-11s\s%11.1f\s%11.1f\s%11.1f\s%11.1f\n", data[0][4], sum_e/10, sum_m/10, sum_p/10, sum/30
|