1.1番 2. #!/usr/koeki/bin/ruby # -*- coding: utf-8 -*- score=[] total = 0 number = 1 kai=0 print"出席回数を入力して下さい。\n" attend=gets.chomp!.to_i enter= attend*2 #p enter print"8回分のレポートの得点の平均点を計算します。\n""レポートの最高得点は8点です。\n" while number <= 8 printf("%d回目の得点は?exitで終了。\n", number) score[kai] = gets.chomp! if score[kai].to_f <0 print"得点は0から8点です。再度正確な点数を入力してください。\n" redo elsif score[kai].to_f >8 print"本当に正確な点数ですか?\n""YesかNoで答えてください。\n" answer = gets.chomp! if answer == "Yes" print"分かりました。" elsif answer =="No" print"再度入力してください。" redo end end true if score[kai] == "exit" break end total += score[kai].to_f average = total/number number += 1 kai+= 1 fine= enter + total end #p score print"------------------\n" print"レポート\n" x=0 if number==9 while x< score.length printf("%d回目 %4.1f点\n",x+1,score[x].to_f) x += 1 end elsif number <8 while x< score.length-1 printf("%d回目 %4.1f点\n",x+1,score[x].to_f) x += 1 end end print"------------------\n" printf("出席点 %7d\n",enter) printf("合計点 %6.1f\n",fine) printf("平均点 %6.1f\n",average) if fine >=90 print"成績 秀\n" elsif fine >=80 print"成績 優\n" elsif fine >=70 print"成績 良\n" elsif fine >=50 print"成績 可\n" elsif fine < 50 print"成績 不可\n" end 3. ○8回入力間違いなしの場合。 出席回数を入力して下さい。 60 8回分のレポートの得点の平均点を計算します。 レポートの最高得点は8点です。 1回目の得点は?exitで終了。 2 2回目の得点は?exitで終了。 3 3回目の得点は?exitで終了。 4 4回目の得点は?exitで終了。 8 5回目の得点は?exitで終了。 8 6回目の得点は?exitで終了。 8 7回目の得点は?exitで終了。 7 8回目の得点は?exitで終了。 6 ------------------ レポート 1回目 2.0点 2回目 3.0点 3回目 4.0点 4回目 8.0点 5回目 8.0点 6回目 8.0点 7回目 7.0点 8回目 6.0点 ------------------ 出席点 120 合計点 166.0 平均点 5.8 成績 秀 ○8回以下間違いありの場合。 出席回数を入力して下さい。 13 8回分のレポートの得点の平均点を計算します。 レポートの最高得点は8点です。 1回目の得点は?exitで終了。 7 2回目の得点は?exitで終了。 5 3回目の得点は?exitで終了。 2 4回目の得点は?exitで終了。 8 5回目の得点は?exitで終了。 9 本当に正確な点数ですか? YesかNoで答えてください。 Yes 分かりました。6回目の得点は?exitで終了。 43 本当に正確な点数ですか? YesかNoで答えてください。 No 再度入力してください。6回目の得点は?exitで終了。 exit ------------------ レポート 1回目 7.0点 2回目 5.0点 3回目 2.0点 4回目 8.0点 5回目 9.0点 ------------------ 出席点 26 合計点 57.0 平均点 6.2 成績 可 4. 1.2行目 おまじない。 3行目 レポートの得点を配列するための[]。 4行目 レポートの合計の計算を0から始めるため。 5行目 レポートを1回目を最初として数えるため。 6行目 kaiはscoreの配列の数を数えるインデックス。0から始める。 7行目 出席回数を促す文。 8行目 ユーザーが回数を入力する。 9行目 enterは出席点を計算する式。 10行目 enterが計算できているかの確認。 11.12行目 説明文。 13行目〜37行目 前回のプログラム。scoreの後ろに[kai]をつけて数えられるよ うにしている。 38行目 scoreの数を数えるための式。 39行目 fineは出席点とレポート点を合わせた合計点の式。 40行目 wileの終了。 41行目 scoreの配列の確認。 42行目 計算結果の区切り。 43行目 レポートの結果。 44行目 scoreの変数。0から始める。 45行目 レポートの結果を8回入力したときはnumberが9になるのでこの条件で指 定。 46行目 %dに何回目かを示せるようx+1が、%4.1fには点数が入るよう score[x].to_fが代入されるようにした。 47行目 xが数を数えられるための式。 48行目 この場合の繰り返しのwhileのend。 49行目 結果の入力が8回未満の場合のelsif。 50行目 lengthのままだとexitの分の回数も含まれてしまうのでこの式。 51.52行目 8回入力のときと同様。 53行目 この場合の繰り返しのwhileのend。 54行目 if全体のend。 55行目 区切り。 56.57.58行目 出席点、合計点、平均点の結果。 59.60行目 90点以上だったら秀と表示 60.61行目 80点以上だったら優と表示 62.63行目 70点以上だったら良と表示 64.65行目 50点以上だったら可と表示 66.67行目 50点未満だったら不可と表示 68行目 成績を示すifのend。 5. プログラムを作っていてインデックスの設定をどのようにすればいいか自分があ まり理解出来ていないのが分かった。結局出席課題の配列のインデックス等をそ のままうつしたようになってしまった。特に45行目のnumberが9なのは未だに納 得できていない。