スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
以後の更新内容の改善のために、是非ともご評価のほどよろしくお願いします!→

PHP練習[4]:FizzBuzz問題


PHP練習問題[4]:FizzBuzz問題

 問題: 1?100までの整数を表示してください。
     ただし、3の倍数の時は「Fizz」、5の倍数の時は「Buzz」と
     表示してください。(公倍数なら「FizzBuzz」と表示すること)
(所要時間 10?20分)


 プログラミングの問題としては、あちこちで見かける「FizzBuzz問題」。

一度知ってしまえば『なんだ、そんなことかぁ』ってなるんですが、
知らないと、『えっ、どうやって求めるの・・・?』となる可能性は十分あります。

まぁ当サイトのPHP練習問題[1]とか[2]、[3]をやっていたら出来ると思いますが…


さぁて、どれくらいの時間で出来るでしょうか?






解答例・解説


 この問題で重要なキーとなるのは、やはり「剰余演算子」でしょうか。
(※剰余演算子についてはコチラをご覧ください。)


『3の倍数』の性質として、「3で割り切れる」というものがあります。
言い換えれば、「3で割ったときの余りは0である」ということです。
では、『5の倍数』は・・・  そう、「5で割り切れる」んです。
その性質を利用して処理していくのが一般的かと思われます。

では、下をご覧ください。



解説です。

1行目のfor構文は、数値の1?100を処理するための繰り返し構文です。
3?5行目のif構文は「3で割り切れたらFizzと表示する」ということです。
6?8行目のは、「5で割り切れたらBuzzと表示する」という意味です。

9?11行目は、「3でも5でも割り切れなかったら、数値自体を表示する」わけです。
ここで、条件式に注目します。
  『 ($cnt % 3) && ($cnt % 3) 』
こんなふうになっていますね。
3行目と5行目の条件式では「===」という比較演算子を使用していますが、
9行目の条件式では、これを使っていません。 条件式を直訳すると、
  『$cntを3で割ったときの余り かつ $cntを5で割ったときの余り』
ですね・・・。  こんなのは条件式とは言いづらいですよね、でも、条件式なのです。
まず、if構文では、条件式がTrueに準ずる値なら{}内を実行するんですよね?
Trueに準ずる値」って何でしょう。
もちろん真偽(論理型)のTrueのことですよね。 でも、それだけでは無いんです。
例えば、数値の1でも・・・ 何らかの文字列でも・・・  Trueと評価するんです。


   『えっ、何言ってんの? ワケワカラン・・・』

と思っても、今は「こういうものだ」と思ってください。
どうしても気になるなら、コチラをご覧ください。自信ないですけど・・・(汗)

とりあえずこの条件式の意味をわかりやすく言えば、
  『$cntが、3でも5でも割り切れなかったら』
ということなんです。


あとは、12行目で改行を挿入して繰り返す?・・・



もっと効率的なものがあると思いますが、私はバカなのでこれで勘弁してください(汗)




PHP練習問題集目次へ
以後の更新内容の改善のために、是非ともご評価のほどよろしくお願いします!→

テーマ : PHP /  ジャンル : コンピュータ

コメントの投稿

非公開コメント

カテゴリー
ようこそ!
Author: Torasuke
Profile: 地元大学の情報系学部に息をひそめる二回生。
   SA SW


ブログ内検索
最近のコメント
オススメ
京都の大学生のラボブログ
Python,Java,Objective-C,GAE,Macなど
Python独習中の大学生のブログ


ltzz.info
ここの管理者さんには謁見済み!(えっ

 Use OpenOffice.org
無補償でも良いなら、MSOfficeよりOpenOfficeで十分です。

Mozilla Firefox ブラウザ無料ダウンロード
当サイトは、Firefoxというブラウザで動作確認しています。私は以前、IE派でしたが、一度乗り換えて慣れてしまうと、Firefoxのほうが便利だということを実感しました。

是非よろしくお願いします。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。