平成17年 秋期 基本情報技術者 午後 問04
問04 中置表記法次のプログラムの説明及びプログラムを読んで,設問1〜3に答えよ。
〔プログラムの説明〕 中置表記法による正しい数式を,スタックを用いて後置表記法に変換する 副プログラム toPostfix である。 (1) 例えば,中置表記法による数式 4×(9+3) は,toPostfix の処理の結果, 後置表記法による数式 4 9 3 +×に変換される。 (2) 中置表記法によるここでの数式は,1けたの数字“0”〜“9”,演算子“+”, “−”,“×”,“÷”及び括弧“(”,“)”の各要素からなる。 各要素は表1に示す変換の優先度をもつ。 ここで,数値が大きいほど優先度が高い。 プログラムでは,各要素を文字として扱い,文字型の配列 Exptext に1要素ずつ格納している。 また,表1に示す要素以外に,スタックの底を示すスタック制御文字 EOS を使用し, その優先度を−1 とする。 表1 変換の優先度
(3) 変換結果の後置表記法の数式は,文字型の配列 Postfix に1要素ずつ格納される。 (4) toPostfix は,スタックを初期化して,Exptext の先頭の要素から順番に次の @,A の処理を繰り返し,Exptext の要素をすべて処理したら,スタックに残っているすべての 数式の要素を順に取り出して Postfix に格納する。 @ Exptext[i] の優先度がスタックの先頭要素の優先度以下で,かつスタックの先頭要素が “(”でない間,スタックから要素を取り出して Postfix に格納する。 A Exptext[i] が“)”でなければ,Exptext[i] をスタックに積み,“)”であれば, スタックから要素を一つだけ取り出す。 (5) toPostfix の引数の仕様を,表2に示す。 すべての配列の添字は,0 から始まる。 表2 副プログラム toPostfix の引数の仕様
(6) toPostfix は,スタックを初期化する手続 initStack,数式の要素をスタックに 積む手続 push,スタックから取り出す関数 pop,スタックの先頭要素の値を返却する関数 top, 及び引数で指定された要素の優先度を返す関数 getPriority を使用する。 initStack,push,pop,top 及び getPriority の仕様を表3に示す。
表3 toPostfix で使用する手続/関数の仕様
〔プログラム〕
設問1 プログラム中の に入れる正しい答えを,解答群の中から選べ。
a に関する解答群 ア i:0, i < Textlen, 1 イ i:0, i ≦ Textlen, 1 ウ i:1, i < Textlen, 1 エ i:1, i ≦ Textlen, 1 b に関する解答群 ア i ← i + 1 イ i ← i − 1 ウ k ← k + 1 エ k ← k − 1 c に関する解答群 ア sflag = true イ sflag = false ウ work = EOS エ work ≠ EOS d に関する解答群 ア i イ i + 1 ウ i − 1 エ k オ k + 1 カ k − 1
設問2 Exptext の内容が次の数式のとき,プログラム中の α で示す箇所での Postfix の内容として正しい答えを,解答群の中から選べ。
解答群 ア 2 4 + 3 イ 2 4 + 3 × 5 ウ 2 4 + 3 × 5 6 × エ 2 4 + 3 × 5 6 × +
設問3 引数で指定された要素の優先度を返す関数 getPriority のプログラムを次に示す。 プログラム中の に入れる正しい答えを,解答群の中から選べ。
〔プログラム〕
解答群 ア element = elem[i] イ element = elem[i−1] ウ element = EOS エ element = priority[i] オ element = priority[i−1] カ element ≠ elem[i] キ element ≠ elem[i−1] [←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||||||||||||||||||||||||||||||||||||||||||