• ベストアンサー

スタックを使って後置記法の式を実現する。

スタックを使って、後置記法の式を標準入力から 読み込みその式を評価するC言語のプログラムを実現したいのですが どのようにしていけばいいでしょうか、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • edomin
  • ベストアンサー率32% (327/1003)
回答No.2

簡単な方法なら、 ・数字が入力されたらスタックにPUSHする。 ・記号が入力されたらスタックから数字をPOPして計算。 ・計算結果をPUSHする。 ・入力を待つ。 例 2 3 5 + 2 * +   操作           スタック 2 PUSHする。       2 3 PUSHする。       3 2 5 PUSHする。       5 3 2 + POPして、計算しPUSH 8 2 2 PUSHする。       2 8 2 * POPして、計算しPUSH 16 2 + POPして、計算しPUSH 18 入力終了→POPして解答表示

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

ここでアルゴリズムを一つずつ説明するのは不可能ですから、 とりあえず、「後置記法 C ソース」あたりで検索サイトで調べてサンプルソースを眺められてはいかがでしょうか? わからないことがあれば、どの部分がわからないか具体的に質問してみてください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 中置記法から後置記法(逆ポーランド記法)への変換について

    課題で 「スタックを用いて、中置記法から小売記法に変換するアルゴリズムを記述せよ。もの中置記法では、括弧、代入文および条件式も対象とすること」 というのがあります。 この場合は、例を示して行ったほうがよいでしょうか?どのようにすればよいかを教えてください。 よろしくお願いします。

  • 式の解析

    1+2*3と標準入力から入力すると(1+(2*3))と計算の優先順に括弧で囲むというプログラムをC言語で作りたいのですがどのように作ればよいのでしょうか? スタックを使うのか二分木を使うかかんがえているのですが突破口がなく困っています。 どなたかすみませんが教えていただけないでしょうか?(>_<)

  • ポーランド記法、逆ポーランド記法のプログラム

    ポーランド記法、逆ポーランド記法のプログラムがわかる方、是非教えてくださいm(__)m 言語は何でもいいのでお願いします~

  • 逆ポーランド記法

    逆ポーランド式12*3+というのがあります。これを、スタックをつかって評価しようと思ったのですが、 スタック 上位⇔下位   入力記号列 12*3+ 1      2*3+ 21      *3+ 2       3+ 23      + 5 こんな感じの評価でいいんですか?くだらない質問すいませんm(__)m

  • プログラミング言語の記法について

    現在構文解析や字句解析、コンパイラの勉強をしており、 プログラミング言語ごとの記法を比較しようと思っているのですが、検索してもなかなか出てきません。 定数,変数,選択文,副プログラムの記法など、プログラミング言語の記法を知るにはどうすればいいでしょうか?

  • C言語で逆ポーランド演算式をスタックを用いて表現するには

    C言語でスタックを使って逆ポーランド表記の演算を行うプログラムを作っています。 正の整数の場合はできたのですが、小数や負の数にも対応できるように変えるにはどうしたらよいのでしょうか? 例えば、スペースで区切られた 1.2 4.2 -3.2 + * と言う様な値を入力してちゃんと計算できるようにしたいのですが・・・。

  • C言語のポインタとスタックポインタ

    プログラム始めて1ヶ月の初心者です。 C言語のポインタとスタックポインタというのは同じなのでしょうか。 スタックポインタの考えは大体理解出来たのですが C言語のポインタとなるとコードを見てもサッパリ分かりません。 ネットで調べても出てこなかったのでどなたか教えて下さい。 よろしくお願いします。

  • スタックモジュール

    「スタックモジュール」を作ることを考える。データ構造の定義と、以下の操作の定義を書け。ただしC言語を使え。 create 空のスタックを作る push スタックにデータを一つ挿入 pop スタックトップのデータを返すとともに、そのデータをスタックから削除 という問題です。 私は、C言語でのスタック構造は配列でしか扱ったことがなく、「スタックモジュール」の意味がよくわかりません。スタック構造はFILOのデータ構造ですが、これをC言語で書こうとすると配列を宣言して終わってしまう気がします。 create・push・popは、int (&num){......}のように普通に関数を宣言すればよいのでしょうか。 どなたか教えてください。

  • スタック C言語

    四則演算のプログラミング(C++)をスタックを用いて作りたいのですがどうすればいいのか全く分かりません。 スタックの原理は分かるのですが…。 かなり検索してスタックの四則演算を少し見ましたが、まともに載ってるのがあまりなく…。ポーランド記述法つかうのか?とか…ドンドンわからなくなりました。 分かるかた、教えてください。 プログラミング載せてくれたら助かりますが、方針だけでも大丈夫です。 作りたいプログラミングは自分で式を入力して、実行結果にその答えが表示されるというものです。また、入力する式はポーランド記述法のものではなく、普通の式(4*2+1 など)です。

  • 逆ポーランド記法

    電卓もどきのアルゴリズムを教えて下さい 指定された数式を解読して、演算結果を求める処理を作成したいのですが・・・・ 今考えている手順は (1) 数式を解析して 逆ポーランド記法の中間言語にして於いておく (2) 逆ポーランド記法の中間言語を演算して答えを求める と考えているのですが・・・ << 例 >>  演算式 1+2×3=    答え 7  演算式 (1+2)×3=  答え 9 大昔の知識ですのでもっとシンプルな方法が有りましたらアドバイス頂けませんでしょうか?

このQ&Aのポイント
  • 筆王ZEROから筆王Ver21にアップグレードしたが、ダウンストールができない
  • Windows10での筆王Ver21の再インストールがうまくいかない
  • ソースネクスト製品のダウンロードに関する問題
回答を見る