こんばんは。
現在、Rubyにて「プレゼントのラッピングに必要なリボンの本数を求める」プログラムをRubyで考えています。
ここで、条件として、
・プレゼントの個数N,リボンの長さLと定義
・例を示す
リボンの長さL=10
プレゼント個数N=5
手順
1個目 リボンL_1=2
→リボンL=10-2=8
2個目 リボンL_2=3
→リボンL=8-3=5
3個目 リボンL_3=4
→リボンL=5-4=1
4個目 リボンL_4=3
リボンの長さが足りないので、新品2本目追加
→リボンL=10-3=7
5個目 リボンL_5=4
→リボンL=7-4=3
よって、使ったリボンの本数は2本
*リボンの長さが足りなくなったら、新品リボンを出す
という手順のプログラムを組んでいます。
ruby
1 2puts 'プレゼントの個数Nを入力してください。' 3N = gets.to_i #個数 4 5puts '新品リボンの長さLを入力してください。' 6L = gets.to_i #新品リボンの長さ 7 8Lnum = 1 #リボンの本数 9 10p 'プレゼントの個数N:' + N.to_s 11p '新品リボンの長さL:' + L.to_s 12 13i = 1 14while i <= N 15 puts 'プレゼント' + i.to_s + '個目のリボンの長さを入力してください。' 16 L_i = gets.to_i #i個目のリボン長さ 17 18 if L_i < L 19 L -= L_i 20 puts 'リボンの残りの長さL:' + L.to_s 21 22 else 23 puts '新品リボンを追加します' 24 NewL = gets.to_i #追加新品リボンの長さ 25 L_i < NewL 26 NewL -= L_i 27 puts 'リボンの残りの長さL:' + NewL.to_s 28 29 Lnum += 1 30 31 end 32 33 i += 1 34end 35 36puts 'リボンの使用本数は' + Lnum.to_s + '本です。'
##困っていること
While 文中のelse内にて、リボンを新たに追加したときの変数の再定義の部分で躓いています。
新品リボンとして
NewL = gets.to_i #追加新品リボンの長さ
を定義したのですが、ループ処理がうまくいかない状況になっています。
else内の処理をどのようなメソッドを用いてあげれば良いでしょうか。