第6回(2005/6/7)
配列の処理は反復(ループ)を使う。
41ページ
問題9
問題10
- 問題9と異なるのは最大値の場所を記憶する変数daiがあること。
- 問題9で新しいmaxを設定するときにdaiの値を設定する。
42ページ
これまでの問題を応用すればよい。
- 最大値maxと最小値minの初期値は配列要素の先頭の値h[1]にする
- 合計の初期値も配列の先頭要素にする
- 配列の2番目の要素から最後の要素までにアクセスできるループを用意し、次の処理を行う。
- 最大値検出
- 最小値検出
- 合計計算
- 全配列への参照が完了したら、平均を計算する。
43ページ
44、45ページ
46ページ
各要素の値と探索キーの値を順に比較し、一致するか否かを調べればよい。
47ページ(二分探索法)
二分探索法は配列内のデータが昇順にソートされていることを前提にした探索法です。名前が示すように探索する範囲を二分(半分)にし、対象とするデータの個数を減らしていきます。
手順は次の通り。
- 探索対象範囲の先頭の要素番号をs、最後の要素番号をeとする。ここでは0→s、8→eとなる。
- 探索対象範囲の中間点の要素番号をmとする。その値は(s + e) / 2 → mとする。
- もし、s > eならば、探索対象の値は存在せず、探索終了。
- もし、TK = H[m]なら見つかったときの処理を実施する。
- もし、TK > H[m]ならm+1→sにする。
- もし、TK < H[m]ならm-1→eにする。
- 2に戻る。
48ページ
キーと一致する科目コードを探し、その要素番号を使って科目名を表示する。
49ページ
48ページの問題を応用する。
- 二重ループを使う
- キーを取り出すループ
- 科目表からキーと一致する科目コードを検索するループ
- 科目コードを検索する。
- 一致した場所(要素番号)から科目名を取り出し、結果を格納する配列要素へ代入する。
50ページ
49ページの変形