読者です 読者をやめる 読者になる 読者になる

うるう年

Ruby 復習

開始と終わりの年を聞いて、その間にあるすべてのうるう年を(開始と終わりの年がうるう年ならそれも含めて)表示するプログラムを書いてみましょう

  • うるう年は4で割り切れる数です
  • 100で割り切れる数はうるう年ではなく(1800や1900のように)
  • 100で割り切れる数はうるう年ではないが、その中で400で割り切れる数はうるう年(1600や2000)

実行

くらいんさんの回答を写経です。

  • 1行目
    • うるう年であるかを定義しましたね
  • 2〜4行目
    • うるう年の条件を提示
  • 10〜16行目
    • んんんん??! else〜endの繋がりがしっくりわからない
  • 18, 19行目
    • うるう年の最初/最後の年を聞いてます→おk
  • 21〜24行目
    • 18,19行目で聞いた年の中で(year.upto)上で定義したうるう年があればputsすることを指示
def leap? ( year )
  if year % 4 == 0
    if year % 100 == 0
      if year % 400 == 0
        return true
      else
        return false
      end
      return false
    else
      return true
    end
  else
    return false
  end
end

start_year = gets.to_i
end_year   = gets.to_i


start_year.upto(end_year) do |year|
  puts year if leap?(year.to_i)
end

1980〜2000年のうるう年を聞いてみた。ほう。
上では「うるう年を全部putsする」よう指示してるが「うるう年がいくつあるか」を聞くこともできそう。だがわからなくなったので今日はここまで。

moomin:ProgrammingRuby tomomi$ ruby leap.rb
1980
2000
1980
1984
1988
1992
1996
2000