[プログラミングとその応用I >  配列とイテレータ >  例題に関する参考プログラム(1)] ]

「配列とイテレータ」の例題に関する参考プログラム(1)

ここでは,次の例題に関するプログラムの例を示します. このプログラムでは,配列と繰り返しを利用していません. このプログラムは,あくまでも参考のためのもので,実際にはこのようなプログラムは書きません.

ある金額(円)を硬貨(1円,5円,10円,50円,100円,500円)でおつりがないように支払うとき, 何円玉を何枚出せばよいかを調べる.

プログラム

例題のプログラムの仕様に書いてある通りに,愚直に処理を行っています. じつは仕様自体,配列と繰り返しのありがたみを強調するために,わざと繰り返しの部分を一つ一つ書き下しています.


 1  =begin
 2  
 3  coins_noarray.rb: 
 4     ある金額(円)を硬貨(1円,5円,10円,50円,100円,500円)でおつりが
 5     ないように支払うとき,できるだけ少ない枚数で支払うには何円玉を
 6     何枚出せばよいかを調べる.
 7  
 8  =end
 9  
10  
11  # 支払う金額を取得する
12  print "おつりがないように硬貨で支払いを行います\n"
13  print "支払う金額(円)を入力して下さい: "
14  amount = gets.to_i
15  
16  # 金額が0円以下の場合は,エラーメッセージを表示して終了する
17  if(amount <= 0)
18    print "1円以上を指定して下さい\n"
19    exit # プログラムを終了させる
20  end
21  
22  ### 各硬貨の支払い枚数の計算と結果の表示
23  print amount,"円は,"
24  rest = amount
25  
26  # 500円の支払い枚数の計算と表示
27  if rest >= 500
28    n = rest/500        
29    print "500円",n,"枚 "
30    rest = rest - n*500
31  end
32  
33  # 100円の支払い枚数の計算と表示
34  if rest >= 100
35    n = rest/100
36    print "100円",n,"枚 "
37    rest = rest - n*100
38  end
39  
40  # 50円の支払い枚数の計算と表示
41  if rest >= 50
42    n = rest/50
43    print "50円",n,"枚 "
44    rest = rest - n*50
45  end
46  
47  # 10円の支払い枚数の計算と表示
48  if rest >= 10  
49    n = rest/10
50    print "10円",n,"枚 "
51    rest = rest - n*10
52  end
53  
54  # 5円の支払い枚数の計算と表示
55  if rest >= 5
56    n = rest/5
57    print "5円",n,"枚 "
58    rest = rest - n*5
59  end
60  
61  # 1円の支払い枚数の計算と表示(残額そのもの)
62  print "1円",rest,"枚 "
63    
64  print "で支払えます\n"
65  

[プログラミングとその応用I >  配列とイテレータ >  例題に関する参考プログラム(1)] ]