1.1 2.#!/usr/koeki/bin/ruby # -*- coding: utf-8 -*- total = 0 report = 1 score = [] x = 0 print"出席回数を入力してください。\n" deta = gets.chomp!.to_i while true printf("%d回目のレポートの得点を入力してください(終了はexitと入力)\n", report) score[x] = gets.chomp!.to_s if score[x] == "exit" report = report-1 break elsif score[x].to_f > 8 #scoreが8点以上 print"最高得点は8点です。本当に間違いではありませんか\n" print"y or n\n" answer = gets.chomp!.to_s if answer == "y" end if answer == "n" print"入力しなおしてください。\n" total -= score[x].to_f redo end elsif score[x].to_f < 0 #scoreがマイナス print"マイナスなんてことはありません。やりなおし\n" total -= score[x].to_f redo end total += score[x].to_f if report >= 8 break end #p score report += 1 x += 1 end print"- - - - - - - - - - - - - - - - - - - - - \n" sten = deta*2 printf("出席点%10d点\n",sten) print"- - - - - - - - - - - - - - - - - - - - - \n" print"レポート\n" x = 0 total = 0 while x < score.length if score[x] =="exit" break end printf("%d回目 %10.1f点\n",x+1,score[x]) total += score[x].to_f x += 1 end print"- - - - - - - - - - - - - - - - - - - - - \n" average = total / report.to_f go = total + sten printf("合計%12.1f点\n",go) printf("平均%12.1f点\n",average) if go >= 90 print"評価 秀\n" elsif go >= 80 print"評価 優\n" elsif go >= 70 print"評価 良\n" elsif go >= 60 print"評価 可\n" else print"評価 不可\n" end 3. sime{c118xxx}% ./report4a.rb [~/program] 出席回数を入力してください。 12 1回目のレポートの得点を入力してください(終了はexitと入力) 8 2回目のレポートの得点を入力してください(終了はexitと入力) 7 3回目のレポートの得点を入力してください(終了はexitと入力) 6 4回目のレポートの得点を入力してください(終了はexitと入力) 7 5回目のレポートの得点を入力してください(終了はexitと入力) 5 6回目のレポートの得点を入力してください(終了はexitと入力) 8 7回目のレポートの得点を入力してください(終了はexitと入力) 6.5 8回目のレポートの得点を入力してください(終了はexitと入力) 8 - - - - - - - - - - - - - - - - - - - - - 出席点 24点 - - - - - - - - - - - - - - - - - - - - - レポート 1回目 8.0点 2回目 7.0点 3回目 6.0点 4回目 7.0点 5回目 5.0点 6回目 8.0点 7回目 6.5点 8回目 8.0点 - - - - - - - - - - - - - - - - - - - - - 合計 79.5点 平均 6.9点 評価 良 ★ブラックボックテスト sime{c118xxx}% ./report4a.rb [~/program] 出席回数を入力してください。 12 1回目のレポートの得点を入力してください(終了はexitと入力) 5 2回目のレポートの得点を入力してください(終了はexitと入力) -7 マイナスなんてことはありません。やりなおし 2回目のレポートの得点を入力してください(終了はexitと入力) 6 3回目のレポートの得点を入力してください(終了はexitと入力) 7 4回目のレポートの得点を入力してください(終了はexitと入力) 8 5回目のレポートの得点を入力してください(終了はexitと入力) 9 最高得点は8点です。本当に間違いではありませんか y or n n 入力しなおしてください。 5回目のレポートの得点を入力してください(終了はexitと入力) 7 6回目のレポートの得点を入力してください(終了はexitと入力) 6 7回目のレポートの得点を入力してください(終了はexitと入力) 8 8回目のレポートの得点を入力してください(終了はexitと入力) 7 - - - - - - - - - - - - - - - - - - - - - 出席点 24点 - - - - - - - - - - - - - - - - - - - - - レポート 1回目 5.0点 2回目 6.0点 3回目 7.0点 4回目 8.0点 5回目 7.0点 6回目 6.0点 7回目 8.0点 8回目 7.0点 - - - - - - - - - - - - - - - - - - - - - 合計 78.0点 平均 6.8点 評価 良 ☆ホワイトボックテスト sime{c118xxx}% ./report4a.rb [~/program] 出席回数を入力してください。 12 1回目のレポートの得点を入力してください(終了はexitと入力) 7 2回目のレポートの得点を入力してください(終了はexitと入力) 8 3回目のレポートの得点を入力してください(終了はexitと入力) 6 4回目のレポートの得点を入力してください(終了はexitと入力) 7 5回目のレポートの得点を入力してください(終了はexitと入力) exit - - - - - - - - - - - - - - - - - - - - - 出席点 24点 - - - - - - - - - - - - - - - - - - - - - レポート 1回目 7.0点 2回目 8.0点 3回目 6.0点 4回目 7.0点 - - - - - - - - - - - - - - - - - - - - - 合計 52.0点 平均 7.0点 評価 不可 4. 今回は、打ち込んだレポート得点を全て表示するために配列を使う。配列とは通 常は一つの値しかいれることのできない変数を、拡張して、複数の値を入れられ るようにしたものだ。 5行目で score=[] でscoreは配列ということを表し、今回はインデックスとし てxを用いており、配列の変数は0からスタートしているため、6行目で x=0 と 表している。前回と違う点は、scoreの後ろに[x]がついてることだ。これは繰 り返し継続する度、キーボードから打ち込まれた値はインデックスを1ずつ増加 させながら配列内に代入されことを表している。 40行目で、一番最初に打ち込まれた出席点に2を掛けることを表している。46行 目でいままで打ち込まれたレポートの点数を lengthメソッドを使って表示させ る。47行目で exit を打ち込まれた終了することを表している。55、56行目で、 合計と平均を計算している。57、58行目の 12という数字は文字列をそろえるた めの数字だ。59行目は、56行目でだした合計をif文を用いて、成績をつける。if の横に書いてある条件を満たすか満たさないかで判定され、満たした場合にはそ の下にかかれた処理が実行される。二つ以上の条件があるため elsif 使いなが ら条件を増やしていく。 5。今回もかなり難しかったです。友達の協力のもと完成できて良かったです。 いままでの知識も使いながらだったので記憶力がためされました。実際、ここに これいれてみようかなっておもっていれたのが当たったところもあり、完璧には 理解できていません。先生の解説をはやくききたいです。