質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

1022閲覧

Ruby fizzbuzz問題

jiyu-jin2393114

総合スコア13

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2019/07/14 22:27

当方初心者で、要件通り(実行結果通り)にコードが書けなくて困っています。
具体的には、作成したコードだと、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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

winterboum

2019/07/14 23:28

判らないことが3つあります 1)「実行する前に下記の1行を記述  num_max = 100」とありますが、codeにそれがない。どう扱うのか?(まぁ大体わかりますが、codeに示してください) 2)引数の num が使われていない。これはどうつかう? 3)「作成したコードだと、4回ループしてしまう」  100回ループしているように見えます。 それとも if--endが4つにわかれていることを言ってますか?
y_waiwai

2019/07/14 23:28

現状のコードでは何が問題なんでしょうか
jiyu-jin2393114

2019/07/15 00:50

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)
otn

2019/07/15 01:59

仕様を完全無視してコードを書いているようですが、これが意図的じゃなくて、仕様に沿ってコードを書いたつもりなら、日本語読解能力がかなり低いと言うことなので、まずは日本語読解の練習をしないと、また同じ事を繰り返すだけだと思います。
guest

回答1

0

ベストアンサー

こういうことでしょうか?

Ruby

1def fizzbuzz(n) 2 if n % 15 == 0 3 puts "FizzBuzz" 4 elsif n % 3 == 0 5 puts "Fizz" 6 elsif n % 5 == 0 7 puts "Buzz" 8 else 9 puts n 10 end 11end 12num_max = 100 13(1..num_max).each do |n| 14 puts fizzbuzz(n) 15end 16

投稿2019/07/15 01:31

yokotatsu

総合スコア92

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jiyu-jin2393114

2019/07/15 01:51

有り難う御座います!理解できました。定義とメソッドを分けずに書いて、勝手に混乱していていました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問