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

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

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

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

Q&A

解決済

3回答

1520閲覧

for文に関する質問

cheeeeeeese

総合スコア179

Ruby

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

0グッド

0クリップ

投稿2015/07/28 02:55

編集2015/07/28 02:56

皆様、お疲れ様です。質問させていただきます。

内容
FizzBuzz問題をfor文で記述したものを学習したいと考えています。
何卒よろしくお願い申し上げます。

for i in 1..100 if i % 5 == 0 if i % 3 == 0 puts "FizzBuzz" end puts "Buzz" elsif i % 3 == 0 puts "Fizz" else puts i end end

for文に関しての理解についてと疑問点
変数 i に1から100の値を代入する以後のif文条件式の「%」が何を意味しているのかがわかりません。

仮定として変数iが5、かつ3と等しい時にFizzBuzzと出力するはずですが、%の存在理由が不明です。
%、つまり剰余が何の機能を働かせているのでしょう??

根本から間違っている場合や、理解のたらない点をお教え頂ければ幸いです。

対象となるコード

if i % 5 == 0 if i % 3 == 0

よろしくお願い申し上げます。

失礼します。

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

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

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

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

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

guest

回答3

0

%の存在理由が不明です。
%、つまり剰余が何の機能を働かせているのでしょう??

カウンタを判定して周期的に分岐したいときに剰余はよく使います。
といっても分かりにくいでしょうから、段階的に説明していきましょう。

i % 5

変数iを5で割った余りを求めます。

i % 5 == 0

変数iを5で割った余りを0と比較します。
(演算子の優先順位から%が先)

if i % 5 == 0

変数iを5で割った余りを0と比較して、
真のときに分岐(endやelseまでの後続の文を実行)します。

しかし、質問者様がご自身で分からないと意味がないように思えます。

IF文、比較演算子(==)、「%(剰余)」の仕様をよく確認したのち、
出力の15行目くらいまで、コードの動作をイメージすると良いと思います。
それからサンプルコードを実行して、出力と突き合わせて答え合わせします。

投稿2015/07/28 03:37

LLman

総合スコア5592

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

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

cheeeeeeese

2015/07/28 04:39

ご回答ありがとうございます。 一つずつ理解していきたいと思います。 今回はありがとうございました。 失礼します。
guest

0

仮定として変数iが5、かつ3と等しい時にFizzBuzzと出力するはずですが、%の存在理由が不明です。
%、つまり剰余が何の機能を働かせているのでしょう??

この仮定が間違っています。
そもそもi(=1,2,3,...,100)が3に等しく、かつ5に等しいことはありえません

FizzBuzz問題のルールをもう一度良く読んでください。

3のときFizz
ではなく
3の「倍数」のときFizzです。

i%3 ==0(i%3)==0であってi%(3==0)ではありません。

投稿2015/07/28 03:14

編集2015/07/28 03:22
ozwk

総合スコア13512

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

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

cheeeeeeese

2015/07/28 04:40

ご回答ありがとうございます。仮定がまず間違っていたのですね、、 今回はありがとうございました。 失礼します。
guest

0

ベストアンサー

こんにちわ。
このプログラムはFizzBuzz問題というんですね。
以下のようなゲームをロジック化したもののようです。

プレイヤーは円状に座る。最初のプレイヤーは「1」と数字を発言する。次のプレイヤーは直前のプレイヤーの次の数字を発言していく。ただし、3で割り切れる場合は 「Fizz」(Bizz Buzz の場合は 「Bizz」)、5で割り切れる場合は 「Buzz」、両者で割り切れる場合は 「Fizz Buzz」 (Bizz Buzz の場合は 「Bizz Buzz」)を数の代わりに発言しなければならない。発言を間違えた者や、ためらった者は脱落となる。

追記
解決していたらすいません。

ruby

1# iに5を足して0になる場合 2if i + 5 == 0 3# iに5を割った余りが0になる場合 4if i % 5 == 0

というように他の四則演算と同じ考えです。
特に難しく考えないでも理解頂けると思います。

投稿2015/07/28 03:00

編集2015/07/28 04:26
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

cheeeeeeese

2015/07/28 03:10 編集

ご回答ありがとうございます。 つまり if i % 5 == 0 if i % 3 == 0は,変数iが 5と0、かつ3と0で割り切れる時にFizzBuzzと出力する。 でよいのでしょうか?? また5== 0としている点にもお答え頂ければと思います。 5だけでは過不足なんでしょうか?? 引き続きよろしくお願い申し上げます。
otn

2015/07/28 03:14

> つまり if i % 5 == 0 if i % 3 == 0は,変数iが 5と0、かつ3と0で割り切れる時にFizzBuzzと出力する。 ??何故そういう風に思ったのでしょうか? if i % 5 == 0 は、「iを5で割った余りが0の時」です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問