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


Back