第6回 基礎プログラミング II レポート課題 氏名:阿部大樹 学籍番号:c1060100 語学クラス:英語 コース(系):社会 1:筆記問題 alphabet[18]は「S」です。 alphabet[40]は「nill」です alphabet[18」ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー aから順に数えて行くと「R」になるが配列の場合「a」を0と数えるので本来19番 目に来る「s」が18番目となる。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー alphabet[40」ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー アルファベットは40も無いので結果「存在しない=nill]となる。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー プログラム問題:A 考えた設定ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 授業でのテストの点数と出席回数を入力して評価し、テストの平均点を求めるプ ログラム ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 作成したプログラムーーーーーーーーーーーーーーーーーーーーーーーーーーー #!/usr/koeki/bin/ruby number = 1 score = [] total = 0 forget = 0 ave = 0 x = 0 while true print "出席回数を入力して下さい\n" print "出席は全部で15回あります\n" user = gets.chomp!.to_i if user > 15 #入力が正しいか確認する。 print"入力ミス\n" redo elsif user < 16 #間違っていた場合再入力させる。 break end end while number <= 8 printf("%d回目のレポートの得点は?\n",number) print "未提出はfと入力\n" score[x] = gets.chomp!.to_i if score[x].to_s == "f" forget += 1 elsif score[x].to_f > 8.0 print"レポートの点数は合ってますか?\n" print"YES→y NO→n\n" #点数の確認 choice = gets.chomp! if choice.to_s == "n" then #間違っていた場合再入力させる。 redo end end total += score[x].to_f number += 1 ave = (user * 2) + total heikin = total / (8 - forget) #平均を計算させる。総得点/回数 x += 1 end print"+-----------------------------+\n" printf("出席点 %d点\n",user * 2) print"+-----------------------------+\n" print"レポート\n" y = 0 number = 1 while number <= 8 printf("%d回目 %d点\n",number,score[y]) y += 1 number += 1 end print"+-----------------------------+\n" printf("合計得点は%3.1f点です。\n",ave) printf("平均点は%3.1f点です。\n",heikin) print"+-----------------------------+\n" if ave >= 80 print"頑張ったあなたは優です!good job!!\n" elsif ave >= 70 print"そこそこなあなたは良です!so good!!\n" elsif ave >= 60 print"まぁ普通なあなたは可です!good!!\n" else print"残念ながらあなたは不可です。oh noo!!!!!\n" end print"+-----------------------------+\n" ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー プログラム実行結果画面ーーーーーーーーーーーーーーーーーーーーーーーーーー pan{c106010}% ./def_statistic.rb [~/ruby] 出席回数を入力して下さい 出席は全部で15回あります 1 1回目のレポートの得点は? 未提出はfと入力 1 2回目のレポートの得点は? 未提出はfと入力 2 3回目のレポートの得点は? 未提出はfと入力 3 4回目のレポートの得点は? 未提出はfと入力 4 5回目のレポートの得点は? 未提出はfと入力 9 レポートの点数は合ってますか? YES→y NO→n n 5回目のレポートの得点は? 未提出はfと入力 5 6回目のレポートの得点は? 未提出はfと入力 6 7回目のレポートの得点は? 未提出はfと入力 7 8回目のレポートの得点は? 未提出はfと入力 f +-----------------------------+ 出席点 2点 +-----------------------------+ レポート 1回目 1点 2回目 2点 3回目 3点 4回目 4点 5回目 5点 6回目 6点 7回目 7点 8回目 0点 +-----------------------------+ 合計得点は30.0点です。 平均点は3.5点です。 +-----------------------------+ 残念ながらあなたは不可です。oh noo!!!!! +-----------------------------+ ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 考察:ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー このプログラムは日常でも計算に使えるプログラムだと感じた。最初評価の表示 が上手くいかなかったが改良して上手く行った。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー B 考えた設定:ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー るびおっちを参考にして育成ゲームを作成しました。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 作成したプログラム:ーーーーーーーーーーーーーーーーーーーーーーーーーー #!/usr/koeki/bin/ruby def nakigoe(gao) #入力に応じて鳴く回数を決める gao.times do print("がおー") end print("\n") sleep 1 end def choice (name) STDERR.print("\n[1]狩りを教える\n") STDERR.print("[2]放置プレー\n") STDERR.print("[3]餌を与える\n") end def ikusei (nissuu, sentaku) x = 2 * nissuu - sentaku printf("しつけ度増加 %d\n", x) x end printf("ライオンを拾いました\n") STDERR.printf("名前はどうする?(未入力の場合レオになるよ):") name = gets.chomp if name == "" name = "レオ" #名前が入力されなかった時の名前 end printf("%sと命名しました。\n", name) omosa = 0 #体重 shitsuke = 1 #しつけ nissuu = 1 #育てた日にち while true printf("%d日目\n", nissuu) choice(name) #選択肢を表示 answer = gets.chomp!.to_i omosa += nissuu + answer printf("体重 = %d\n\n", omosa) shitsuke += ikusei(nissuu,answer) printf("しつけ = %d\n", shitsuke ) nakigoe(answer) #入力した選択肢の分だけ鳴く if omosa > 10 #omosaが4を超えたら抜ける break end #if shitsuke > 8 #shitsukeが4を超えたら抜ける # break #end if nissuu == 3 #3日目になったら抜ける break end if shitsuke >= 0 printf("しつけ度 %s \n", "*" * shitsuke) end nissuu += 1 #日にちを進める。 print("---------------------------------------\n") end if shitsuke >= 0 printf("しつけ度 %s \n", "*" * shitsuke) end printf("%sは", name) if shitsuke > 7 print("百獣の王(ライオンキング)") #shitsukeが8を超えたら elsif shitsuke <= 5 print("ねこみたい") #shitsukeが5以下だったら else print("野生") #それ以外 end print("になりました\n") ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー プログラム実行結果画面:ーーーーーーーーーーーーーーーーーーーーーーーーー pan{c106010}% ./def_rollplaying_a.rb [~/ruby] ライオンを拾いました 名前はどうする?(未入力の場合レオになるよ): レオと命名しました。 1日目 [1]狩りを教える [2]放置プレー [3]餌を与える 1 体重 = 2 しつけ度増加 1 しつけ = 2 がおー しつけ度 ** --------------------------------------- 2日目 [1]狩りを教える [2]放置プレー [3]餌を与える 2 体重 = 6 しつけ度増加 2 しつけ = 4 がおーがおー しつけ度 **** --------------------------------------- 3日目 [1]狩りを教える [2]放置プレー [3]餌を与える 3 体重 = 12 しつけ度増加 3 しつけ = 7 がおーがおーがおー しつけ度 ******* レオは野生になりました ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 考察ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 選択肢によって最後が変わるシステムがどう作られているか分かった。 どのようにすればどのエンディングになるか調べてみたい。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 感想:ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー るびおっちと名前の似ている「たまごっち」は今回習ったプログラムに似ている と思う。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 参考文献 西村まどか先生HP 目的に応じて使ってみよう http://roy/~madoka/2010/r2/06/ るびおっち http://roy/~madoka/2010/r2/06/06_11_theme_09_rubiocci.html 共同学習者 4年 間中優也