提出課題:03回目レポート 本文: 1.#!/usr/koeki/bin/ruby # -*- coding: utf-8 -*- total = 0 number = 1 print"8回のレポートの合計得点を計算します。\n" while number <= 8 printf("%d回目のレポートのレポートの得点は?\n", number) score = gets.chomp!.to_f total += score number += 1 end printf("8回のレポートの合計は%5.2fです。\n",total) 2.8回のレポートの合計得点を計算します。 1回目のレポートの得点は? 10 2回目のレポートの得点は? 10 3回目のレポートの得点は? 10 4回目のレポートの得点は? 10 5回目のレポートの得点は? 10 6回目のレポートの得点は? 10 7回目のレポートの得点は? 10 8回目のレポートの得点は? 10.5 8回のレポートの合計得点は80.50です。 3.4行目は変数totalの初期値を0に設定。 5行目は変数numberの初期値を1に設定。 9〜14行目はwhile-end。繰り返し表現する際に用いられる。 9行目、繰り返し継続条件。numberが8以下の間は繰り返し処理を行うことになる。 10行目、“”内のメッセージを表示。繰り返し継続条件内で繰り返される。%dの部分にnumberを入れ込む。繰り返すたびに値が増えていく。 11行目、入力されたものを実数に変換してscoreに代入。 12行目、現在のtotalの値にscoreの値を加える。(入力された値が足されていく。) 13行目、現在のnumberの値に1を加える。(10行目で指定した、%dの部分の値が増えていく。) 14行目、endで締める。 4.#!/usr/koeki/bin/ruby # -*- coding: utf-8 -*- sum = 0 ninzuu = 0 while line = gets #p line sum += line.to_f ninzuu += 1 end heikin = sum / ninzuu printf("酒田市民の平均年齢は%5.1fです。\n",heikin) 5.酒田市民の平均年齢は 47.5歳です。 (termで実行する際は./report2b.rb population.csvとファイル指定) 6.4行目、sumの初期値を0に設定。 5行目、ninzuuの初期値を0に設定。 7〜11行目はwhile-end。繰り返し表現する際に用いられる。 7行目、繰り返し継続条件。getsでファイル内容を読み込む。ファイル内の データ、1行を1つのデータとして読み込み、変数lineに代入。(読み込むデータがなくなると、繰り返しから抜ける。) 8行目、lineの中にどのような値が代入されているか、表示して確認できる。最終的なプログラムの目的には不要なので、#で無効化している。 9行目、sumにlineの値を加算代入。lineの値はto_fで実数に変換。これで、 10行目、ninzuuの値に繰り返し1を加える。初期値0から、読み込むデータがなくなるまで繰り返し1を足しているので、データの数、すなわち酒田市の全体の人数がわかる。 11行目、endで締める。 12行目、前述のプログラムで、年齢の合計(sum)と人数(ninzuu)が求めてあるので、合計割る人数で年齢の平均を計算。 7.あんな大規模なデータをほんの数秒で計算処理できることに驚いた。calcで確認するときに使い方を忘れてしまっていて焦った。だんだん難しくなってきた。これからもっと難しくなると考えると震えがとまらない。 8.なし 添付: report2a.rb report2b.rb http://e-sahf.jp/class/wp-content/uploads/2023/05/1832364636645262fbb602a.ods