- 711 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 16:19:34 ]
- 【 課題 】以下のプログラムを作成せよ。
(1)スタックと演算子順位を使った構文解析により、中置記法の式を後置記法に変換するプログラム。 (オペランドはa〜zの一文字とする) (2)中置記法の式を後置記法に変換し、スタックを使ってその後置記法の式を計算するプログラム。 (オペランドは整数または実数) 後置記法に変換するアルゴリズム: 初期設定:スタックに'$'だけを積む 以下を繰り返す (1)次の入力記号aiを読む(入力記号がなかったら'$'を読んだことにする) (2)aiがオペランドなら、それをそのまま出力 (3)aiが'('なら、それをスタックに積む (4)aiが')'なら、最初に出てくる'('までスタックから降ろす(オペレーターは出力する) (5)aiが'$'なら、'$'までをスタックから降ろし(オペレーターは出力する)、処理を終了 (6)その他の場合(aiはオペレーター。そのときスタックのトップがbであるとする) bがオペレーターでありprec(b)>=prec(ai)である間(precは演算子順位を返す関数) bをスタックから下ろして出力する。 bがオペレーターでないか(bは'('か'$')、prec(b)<prec(ai)なら、aiをスタックに積む prec(+)=prec(-)=1 prec(*)=prec(/)=2 問題の例: 中置記法 a*b+c → 後置記法 ab*c+ 中置記法 d-(e+f*g) → 後置記法 defg*+- 【 形態 】1. Javaアプリケーション 【 期限 】4/20(金) 23:00まで 【 Ver 】java version "1.6.0_01" 丸投げですがよろしくお願いします。
|

|