![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
入力データが取引先コード 1000 だった場合、ループ 2 の動作は
Mid = Floor((0 + 19) / 2) = 9
ループ判定 → まだ見つからないので続行
Jogen = 9 - 1 = 8
Mid = Floor((0 + 8) / 2) = 4
ループ判定 → まだ見つからないので続行
(中略)
ループ判定 → まだ見つからないので続行
Jogen = 0 - 1 = -1
Mid = Floor((0 + -1) / 2) = -1
ループ判定 → 探索範囲を外れたので終了
Jogen <= Kagen でない状態で計算した Mid の値は、
配列の範囲外になってしまう可能性があります。
そのためループ後に Sco(Mid) = Tco を実行すると、
上記例の場合に Sco(-1) と評価され範囲外参照のエラーになります。
ループ終了条件は以下の二通りだけなので
ループ後ならば Jogen ≦ Kagen だけ評価すれば、
見つかったか否かを判断ができます。
1) Jogen ≦ Kagen かつ Sco(Mid) = Tco
→ 探索範囲内に値が見つかった
2) Jogen > Kagen
→ 探索範囲外になったのでもう探しても無駄
余談ではありますが、
ループ条件が "Jogen ≦ Kagen かつ Sco(Mid) ≠ Tco" なので、
Mid=-1 だとエラーになるのではと不安になりますが、
「先に記述された条件式が偽になった時点で、判定を終了する」
と注記があり、短絡評価をしているから間違いではないと言いたい様です。
参考)
https://ja.wikipedia.org/wiki/%E7%9F%AD%E7%B5%A1 …
ですが (4) の条件を考えると、些か配慮が足りない出題だと感じました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(形式科学) 再投稿 この問題がわかりません 1 2021/12/16 15:39
- 数学 三択問題が14問あり1回毎に正解数がわかる時、どんな方法であれば最低回数の試行で全問正解が分かるか? 2 2021/12/16 09:43
- その他(教育・科学・学問) フローチャートについて質問です。 質問Aと質問Bに対するYesかNoの答えで4パターンの場合分けが行 5 2021/12/26 02:30
- 電気工事士 変圧器について この問題の答えは2,3,4であってますか? 【問題】現実の変圧器において,二次巻線に 1 2021/11/30 16:09
- その他(教育・科学・学問) 確率の問題 6 2022/07/27 12:00
- 英語 うまく伝わるかわからないんですけど、真剣な質問です。 英文法の問題、文があって、途中にかっこ( )が 3 2021/11/03 22:34
- 数学 三角比の不等式の問題です。 0°≦θ≦180°のとき、次の不等式を満たすθの値の範囲を求めよ。 解答 2 2021/11/24 00:31
- 教えて!goo Quoraで私の質問がのってました。どうして?? 1 2021/10/21 19:41
- 教えて!goo 質問削除のお知らせに付いて。 3 2022/02/02 17:31
- 数学 数学が得意な方。 私は数学がとても苦手で、他の教科と比べ物にならないくらい点数が取れません。 また、 6 2021/10/26 18:09
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WinAPI「MsgWaitForMultipleObj...
-
画面を強制的に再描画させる方法
-
ExcelVBA FindNextを使用して条...
-
エクセルの当番表を作っていま...
-
Excel VBAで、アクティブシート...
-
エクセルVBAの勉強を始めま...
-
アクティブセルから、A列最終行...
-
VBAでの一時停止と再開の方法
-
DoEventsが必要な理由について
-
多重ループの抜けだし方
-
再帰関数のインライン展開
-
ループ内での条件処理
-
Escキーを押すと、中断する時と...
-
VBAで3秒だけ時間を止めたい
-
WSH:任意のキーを押してDo Whi...
-
VBA Dir関数でファイルをループ...
-
uwsc条件並列とそれの抜け方
-
StatementとResultSetのclose()...
-
アセンブラによるウェイト(WAIT...
-
エクセル関数で1〜12の数字がル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
UWSCの終了の仕方
-
DoEventsが必要な理由について
-
VBAで3秒だけ時間を止めたい
-
範囲指定したセルを1つずつ飛...
-
Escキーを押すと、中断する時と...
-
DOSコマンドのループ内のTIMEコ...
-
vbscriptでIE自動入力(途中で...
-
乱数の桁数指定、または範囲指定。
-
GIFアニメをループさせたくない
-
プログラミングについて。 1つ...
-
エクセルの当番表を作っていま...
-
テキストボックスの名前に変数...
-
ループフリー
-
vb.netからエクセル関数書き込み
-
CSVファイルの特定の行だけを読...
-
VBA for i=1 to lastrow
-
どなたかこのプログラミングを...
-
Do whileでExitせず、ループの...
おすすめ情報