第5回 基礎プログラミングII 演習問題 氏名:久保田 瑛一郎 学籍番号:c109058 語学クラス:英語1 コース:社会福祉 ● 数字を揃える プログラムのソースである printf("%3dヶ月目 体重 %4.1f [kg]\n", j + 1, weight)のところを変更する。具体的には、%3dヶ月目のところを、%dヶ月目とい うように変更する。これは前に3ブロック分前が空く。 試しに、%5dとする。すると以下のような結果が得られる pan{c109058}% ./def_metabolic.rb [~/Ruby] 走行距離: 23 初期体重 100[kg], 走行距離 23[km] 1ヶ月目 体重 93.1 [kg] 2ヶ月目 体重 86.2 [kg] 3ヶ月目 体重 79.3 [kg] 4ヶ月目 体重 80.0 [kg] 5ヶ月目 体重 77.7 [kg] 6ヶ月目 体重 80.0 [kg] 7ヶ月目 体重 77.7 [kg] 8ヶ月目 体重 80.0 [kg] 9ヶ月目 体重 77.7 [kg] 10ヶ月目 体重 80.0 [kg] 11ヶ月目 体重 77.7 [kg] 12ヶ月目 体重 80.0 [kg] よって5ブロック(5桁)分空く。 ●標準体重に近づくと もうすでに else decrease = - 0.3 となっているため decrease = - 1.0に変更した。 1ヶ月目 体重 99.0 [kg] 2ヶ月目 体重 98.0 [kg] 3ヶ月目 体重 97.0 [kg] 4ヶ月目 体重 96.0 [kg] 5ヶ月目 体重 95.0 [kg] 6ヶ月目 体重 94.0 [kg] 7ヶ月目 体重 93.0 [kg] 8ヶ月目 体重 92.0 [kg] 9ヶ月目 体重 91.0 [kg] 10ヶ月目 体重 90.0 [kg] 11ヶ月目 体重 89.0 [kg] 12ヶ月目 体重 88.0 [kg] となっているため減少している。 ●コマンドラインで入力 a元にしたプログラム argv_ticket.rb を参照しargvの使い方について確認し、def_factrial.rbをべー スにコマンドラインで結果を出力できるようにした。 b作成したプログラム #!/usr/koeki/bin/ruby #インタプリタであることを宣言する def factorial(m) # factorialというメソット=計算方法を定義する。このときmという変数も使用することを教える if m == 1 #もしmが1だったら 1 #1を返す(1を表示する) else #それ以外は m * factorial(m-1) #計算方法 end #ifのおわり end #defのおわり n =ARGV[0].to_i #n(階乗を求める数を入れるところ)はコマンドライン(ktermから直接入力できるようにする)で入力できるようにする printf("%dの階乗は%dです\n", n, factorial(n)) #結果表示 c実行結果 パターン1 pan{c109058}% ./1026_exe.rb 4 [~/Ruby] 4の階乗は24です パターン2 pan{c109058}% ./1026_exe.rb 3 [~/Ruby] 3の階乗は6です d 考察 bc -lにて試算する パターン1と2 pan{c109058}% bc -l [~/Ruby] 4*3*2*1 24 3*2*1 6 ●ピタゴラスの定理プログラム a考えた設定 ピタゴラスの定理を用いて、長辺の長さを求めるプログラムhypotenese.rbを作 成した。 b元にしたプログラム この問題のページ似合ったソースをもとに作成した。 c 作成したプログラム #!/usr/koeki/bin/ruby #インタプリタ宣言文 def pythagoras(tate,yoko) #計算方法を登録(定義)する。このときtateとyokoと言う変数も使用することを教えてあげる(定義する) if tate < 0|| yoko< 0 #もし入力された値がtateもしくはyokoが0だったら return nil #空白を返す else #それいがいは (tate**2 + yoko**2) **0.5 #計算方法 たての2乗と横の2乗を足すと長辺の2乗となり。2乗なので0.5をする end #ifのおわり end #defのおわり print("直角三角形の長辺をもとめます。\n") STDERR.printf("縦の長さを入力して下さい:") #質問表示 tate=gets.chomp.to_i #そこに入力されたものを取り込み、改行文字を取り、10進数と見なす STDERR.print("横の長さを入力して下さい:") #質問表示 yoko=gets.chomp.to_i #そこに入力されたものを取り込み、改行文字を取り、10進数と見なす printf("直角三角形の長辺の長さは%4.1fcmです\n",pythagoras(tate,yoko)) #結果表示 d実行結果 pan{c109058}% ./hypotenese.rb [~/Ruby] 直角三角形の長辺をもとめます。 縦の長さを入力して下さい:3 横の長さを入力して下さい:4 直角三角形の長辺の長さは 5.0cmです e 考察 最初はbc -lを用いる pan{c109058}% bc -l [~/Ruby] 3*3+4*4 25 quit 25の2乗は5である ●ソート類 時間の都合上クイックソートのみを実行した。 実行した証明として、見づらいかも知れないが、私のホームページに写真を掲載 し、以下に記すので、見ていただけると幸いである。 http://roy/~c109058/exe_r2/05_quick.html ホームページのソースも掲載する
© c109058 Eiichiro Kubota