0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Ruby 条件演算子

Posted at

条件演算子を使ってプログラムを書く

3桁の正の整数を入力します。その整数の「百の位・十の位・一の位の和」について、
10の倍数(10,20,30...)からの差が

  • 2以内であるときは"True"
  • それ以外は"10の倍数との差は○です"
    と表示されるようにしましょう。
出力例:
near_ten(117)→True
near_ten(123)→10の倍数との差は4です
near_ten(111)→10の倍数との差は3です

百の位・十の位・一の位の和が6などの時に、「10の倍数との差は6です」と出力せずに、「10の倍数との差は4です」と10の倍数から近い方の差を出力するようにしてください。また、0も10の倍数に含むものとします。

模範回答
def near_ten(num)
  total = (num / 100) + (num / 10 % 10) + (num % 10)
  remainder = total % 10
  if remainder <= 2 || remainder >= 8
    puts "True"
  elsif remainder <= 5
    puts "10の倍数との差は#{remainder}です"
  else
    puts "10の倍数との差は#{10 - remainder}です"
  end
end

# 呼び出し例
near_ten(300)

解説

100の位, 10の位, 1の位を足した数値をtotalにまとめました。
remainderは、100の位, 10の位, 1の位を足した数値を10で割ったあまりの数値を計算。

if remainder <= 2 || remainder >= 8

上記コードは「remainderが10の倍数との差が2以内である場合」と意味します。

elsif remainder <= 5
  puts "10の倍数との差は#{remainder}です"

elsifはremainderが5以下のとき、つまり3か4か5のときに「"10の倍数との差は#{remainder}です"」と返すよう記述しています。
※5以下なので1, 2も当てはまるのでは?と最初思っていましたが、
10の倍数との差が2以下の場合はTrueと返すよう指示があったので、該当しません。

else
  puts "10の倍数との差は#{remainder}です"

elseでは、remainderが6か7のときに「"10の倍数との差は#{10 - remainder}です"」と変えるよう記述しています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?