基本情報技術者過去問平成17年 午後 問4最終更新日 2005/11/28
|
Tomのネットワーク勉強ノート |
![]() |
![]() |
![]() |
問4 次のプログラムの説明及びプログラムを読んで,設問1〜 3に答えよ。
〔プログラムの説明〕
中置表記法による正しい数式を,スタックを用いて後置表記法に変換する副プログ
ラムtoPostfixである。
(1)例えば,中置表記法による数式4×(9+3)は,toPostfixの処理の結果,後置
表記法による数式493+×に変換される。
(2)中置表記法によるここでの数式は,1けたの数字“0”〜“9”,演算子“+”,
“-”,“×”,“÷”及び括弧“(” , ”)”の各要素からなる。各要素は表1に示す変
換の優先度をもつ。ここで,数値が大きいほど優先度が高い。プログラムでは,各
要素を文字として扱い,文字型の配列Exptextに1要素ずつ格納している。また,
表1に示す要素以外に,スタックの底を示すスタック制御文字EOSを使用し,そ
の優先度を-1とする。
表1 変換の優先度
_ |
|
(3)変換結果の後置表記法の数式は,文字型の配列Postfixに1要素ずつ格納される。
(4)toPostfttxは,スタックを初期化して,Exptextの先頭の要素から順番に次の
@,Aの処理を繰り返し,Exptextの要素をすべて処理したら,スタックに残って
いるすべての数式の要素を順に取り出してPostfttxに格納する。
@Exptext[ i ]の優先度がスタックの先頭要素の優先度以下で,かつスタック
の先頭要素が“(”でない間,スタックから要素を取り出してPostfixに格納する。
AExptext[ 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の内容として正しい答えを,解答群の中から選べ。
Exptextの内容 |
|
解答群
ア 24 + 3 イ 24 + 3
× 5
ウ 24 + 3 × 56 × エ 24 + 3 × 56 × +
設問3 引数で指定された要素の優先度を返す関数getPriorityのプログラムを次
に示す。プログラム中の【 】に入れる正しい答えを,解答群の中から選べ。
〔プログラム〕
○ 整数型:getPriority ( 文字型: element )
/* 関数 getPriorityは,数字,演算子,括弧又はスタック制御文字を
elementで受け取り,その優先度を整数型で返す */
/* 文字型の配列elemを初期化する */
/* 添字の範囲は0〜16である */
○ 文字型:elem[0:16]← { “0” , “1” , “2” , “3” ,
“4” , “5” , “6” , ”7” ,
“8” , ”9” , ”+” , ”-”
, ”×” , ”÷” , ”(” , ”)” , EOS}
/* 整数型の配列priorityをelemの各要素の優先度で初期化する */
/* 添字の範囲は0〜 16である */
○ 整数型:priority[0:16] ← {3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 , 3 ,
3 , 1 , 1 , 2 , 2 , 4 , 0 , -1}
○ 整数型:i
解答群
ア element = elem[ i
] イ element = elem[ i - 1 ]
ウ element = EOS
エ element = priority[ i ]
オ element = priority[ i - 1 ] カ element
≠ elem[ i ]
キ element ≠ elem[ i - 1 ]
Tomのネットワーク勉強ノート |
![]() |
![]() |
![]() |