『たった2日でできるRuby』復習問題の解答例

『たった2日でできるRuby』ここまでの復習(2日目)の解答例です。

1. whiletest1.rb

i = 11
while i < 20 do
  puts(i)
  i = i + 1
end

2. whiletest2.rb

i = 10
while i <= 20 do
  puts(i)
  i = i + 2
end

3. sum1.rb

num = 0
while true do
    puts("整数を入力してください。")
    num = num + gets.to_i
    if num >= 100 then
        break
    end
end
puts("入力された値の合計が100を超えました。")
puts("合計は #{num} です。")

4. sum2.rb

puts("和を開始する数値を入力してください。")
from_number = gets.to_i
puts("和を終了する数値を入力してください。")
to_number = gets.to_i
sum = 0

for i in (from_number..to_number)
    sum = sum + i
end

puts("#{from_number} から #{to_number} までを足しあわせた数は #{sum} です。")

(始..終)で範囲を指定できるのを利用して、for文でループを作っています。変数iには、開始する数から終了する数までが順に格納されます。

5. kuku.rb

i = 1
j = 1
while i < 10 do
    while j < 10 do
        printf("%3d", i * j)
        j = j + 1
    end
    puts()
    i = i + 1
    j = 1
end

「%3d」は、3桁の範囲で数値を表示する意味です。7行目のputs()は、改行として使っています。内側のwhileループを抜けるとき、jの値を初期化しないと、おかしなことになってしまいます。

6. arraysort.rb

number = []
puts("整数を5つ入力してください。")
5.times do |i|
	number[i] = gets.to_i
end

puts("小さい順に並べます。")
sorted_number = number.sort
5.times do |i|
	puts("#{i + 1}: #{sorted_number[i]}")
end

1行目で配列numberを初期化しています。ソートした結果は配列sorted_numberに代入しています。