• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:簡単なwhile・break文)

PHPのテストで要素合計が1000を越えた時の処理について

このQ&Aのポイント
  • PHPのテストです。以下のコードでは、1から始まる$countと0から始まる$sumの2つの変数を用いてwhileループを実行します。
  • ループ内では、$countを$sumに加算し、$sumが1000を超える場合は処理を終了して$countの値を表示します。
  • ループが終了した後に$sumの値を表示し、コードの動作を確認します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.4

ここに色々な証明法が載っていますが、ベストアンサーのものが一番シンプルで分かりやすいと思います。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1162036776

KAIJI-000
質問者

補足

難しすぎます(。>0<。)。でもプログラマーでもこのくらい知っておいた方がよいでしょうか?

その他の回答 (5)

回答No.6

>式の提示有難うございます。この式の出し方についても教えていただけないでしょうか? http://ja.wikipedia.org/wiki/%E7%AD%89%E5%B7%AE%E6%95%B0%E5%88%97 等差数列 です。 1+2+・・・10なら、 (1+10)*(10)/2=55 (最初+最後)*(間の距離)/2です。 この手の式は答えが最初からあるので、 実は計算する意味はなかったりもします。 等比が、掛け算タイプ。

KAIJI-000
質問者

補足

有難うございます。余裕があればこういう勉強もしてみます。数学がてんで駄目なんで。

  • vivace152
  • ベストアンサー率55% (91/165)
回答No.5

No.1です。補足への回答です。 >>countが45で終了する理由は、 >>whileループ中のif文に >>「if ($sum > 1000)」と、 >>$sumの値でチェックをしているからです。 > >式のプロセスを細かく教えていただけませんか? whileループ中に下記のif文があります。 if ($sum > 1000) { print '1000を越えたので count = '.$count.' で終了します'; break; } if文の判定条件は「$sum > 1000」ですので、変数$sumの値が1000を超えると真となり、 if文のかっこ{ }内を実行します。 今回の場合、print文で「1000を超えたので・・・」の部分のメッセージを表示して、 break文でwhileループを抜けます。 whileループを抜けた後はコメントとして 「// breakが実行された時に処理が移る位置」 とある部分に移動します。 ここに処理が移動する理由は、while文の範囲を表すかっこの後ろ側「}」が このコメントの前の行にあるからです。 「式のプロセス」ということですが、こんな感じでよろしいでしょうか?

KAIJI-000
質問者

補足

いや、さすがにそっちのプロセスは分かります。ではなく回答No2の方のような数学的な話です。

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.3

> (2)count は2なので > $sum += $count; のところで$sumは 2になり 1に2を足した結果は3です。 2ではありません。

KAIJI-000
質問者

補足

失礼しました。

noname#244856
noname#244856
回答No.2

数学のお話です。 1+2+3+4+5+...+n = n(n+1)/2 という公式はご存知ですよね。中学校か高校ぐらいで習うはずです。 n=44 のとき 990 n=45 のとき 1035 となるので、45で終了することは自明です。

KAIJI-000
質問者

補足

式の提示有難うございます。この式の出し方についても教えていただけないでしょうか?

  • vivace152
  • ベストアンサー率55% (91/165)
回答No.1

コード通りに正常に動いていると思います。 countが45で終了する理由は、 whileループ中のif文に 「if ($sum > 1000)」と、 $sumの値でチェックをしているからです。 合計値$sumの値が1000を超えた時点でループを抜けるようになっています。

KAIJI-000
質問者

お礼

早速のご返答ありがとうございました!

KAIJI-000
質問者

補足

>countが45で終了する理由は、 >whileループ中のif文に >「if ($sum > 1000)」と、 >$sumの値でチェックをしているからです。 式のプロセスを細かく教えていただけませんか?

関連するQ&A