当方初心者で、要件通り(実行結果通り)にコードが書けなくて困っています。
具体的には、作成したコードだと、4回ループしてしまうので、1回で済む様にしたいです。
ご教授下さい。
FizzBuzzのメソッドの仕様
特定の整数値を引数として受け取り
数値によって戻り値が変わる(条件は下記)
数値が3の倍数であれば、戻り値は”Fizz”
数値が5の倍数であれば、戻り値は”Buzz”
数値が3の倍数であり5の倍数でもある場合は、戻り値は”FizzBuzz”
上記のどれも満たさない場合は、その数値自体を戻り値に.
FizzBuzzのメソッドの使い方
FizzBuzzのメソッドを実行する前に下記の1行を記述(代入する数値は100でなくても構わない)
num_max = 100
1から num_max までの整数値についてループを作り、FizzBuzzのメソッドを実行
FizzBuzzのメソッドの戻り値をターミナルに表示
num_max の値を100としたとき、正しく書かれたプログラムを実行した結果を下記に示す。
以下作成したコード
def fizzbuzz(num) (1..100).each do |n| if n % 15 == 0 puts "FizzBuzz" elsif n % 3 == 0 puts "Fizz" elsif n % 5 == 0 puts "Buzz" else puts n end end end puts fizzbuzz(1) puts fizzbuzz(3) puts fizzbuzz(5) puts fizzbuzz(15)
以下要件通りの実行結果
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34 Buzz Fizz 37 38 Fizz Buzz 41 Fizz 43 44 FizzBuzz 46 47 Fizz 49 Buzz Fizz 52 53 Fizz Buzz 56 Fizz 58 59 FizzBuzz 61 62 Fizz 64 Buzz Fizz 67 68 Fizz Buzz 71 Fizz 73 74 FizzBuzz 76 77 Fizz 79 Buzz Fizz 82 83 Fizz Buzz 86 Fizz 88 89 FizzBuzz 91 92 Fizz 94 Buzz Fizz 97 98 Fizz Buzz
判らないことが3つあります
1)「実行する前に下記の1行を記述 num_max = 100」とありますが、codeにそれがない。どう扱うのか?(まぁ大体わかりますが、codeに示してください)
2)引数の num が使われていない。これはどうつかう?
3)「作成したコードだと、4回ループしてしまう」
100回ループしているように見えます。
それとも if--endが4つにわかれていることを言ってますか?
現状のコードでは何が問題なんでしょうか
1) = num_max=100はどの行に配置すべきなのでしょうか?
2) = num修正させていただきました。
3) = 伝え方が下手ですみません、以下コードだと実行結果が1~100までを4回繰り返してしまいます。
環境はcloud9です。
def fizzbuzz(num)
(1..100).each do |num|
if num % 15 == 0
puts "FizzBuzz"
elsif num % 3 == 0
puts "Fizz"
elsif num % 5 == 0
puts "Buzz"
else
puts num
end
end
end
puts fizzbuzz(1)
puts fizzbuzz(3)
puts fizzbuzz(5)
puts fizzbuzz(15)
仕様を完全無視してコードを書いているようですが、これが意図的じゃなくて、仕様に沿ってコードを書いたつもりなら、日本語読解能力がかなり低いと言うことなので、まずは日本語読解の練習をしないと、また同じ事を繰り返すだけだと思います。
回答1件
あなたの回答
tips
プレビュー