問題タブ [postfix-notation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 単項/二項演算子を含む中置への後置
後置記法から中置記法へのコンバーターを作成しようとしていますが、助けが必要です。infix-to-postfix conversion に関する質問が既にあります。これは、変換に失敗している例を示しています。(注: マイナス記号がありません!)
以下は私のコンバーターの出力です。1 番目の「列」は後置入力、2 番目は中置出力、3 番目はおそらく取得すべきもの (?) です。
この問題を解決できると思いますか、それとも最後の 2 行は実際に正しく変換されていますか? この問題を解決するアルゴリズムをどのように記述しますか?
+
より多くの演算子 ( andだけでなく) を単項演算子と 2 項演算子の両方として設定できると仮定してください-
。単項演算子は 2 項演算子よりも優先されます。
参考文献
algorithm - 次の接尾表記のうち、中置和 1+2+3+4 を正しく表しているものはどれですか?
infix-to-postfix-to-infix コンバーターをテストしていますが、ある種の不確実性が見つかりました。たとえば、単純な中置和
接尾辞に変換できます
等優先度の演算子は累積しないものとします。もしそうなら、私は得る
一方、次の後置式はすべて初期和に変換できます。
これらの後置式はすべて正しいですか?
更新1
そのようなコンバーターを作るとしたら、どのフォームを選びますか? テスト用に 1 つ選択する必要があります。
python - このPython後置記法(逆ポーランド記法)インタープリターをより効率的かつ正確にすることはできますか?
これは、式を評価するためにスタックを利用するPython後置記法インタープリターです。この関数をより効率的かつ正確にすることは可能ですか?
c - 中置から後置
私はこの問題を理解しようとしてきました。基本的な電卓を作るという課題があります。
そのためには、postfix の指示が必要です。オンラインでいくつかのコードを見つけましたが、これは機能しましたが、gets() を使用していました。
get を置き換えてみましたが、プログラムが機能しなくなりました。これがコードです。誰かがエラーを見つけてくれることを望んでいました(入力として2 + 4を使用すると、2を数字として読み取り、次に+演算子として、次に4を数字として認識します...その後、ラインに沿ってどこかでループします)
明確にするために、このコードを使用することは、参照として引用する限り、私の課題にとって公正なゲームです (ほんの一部であるため)。
助けてくれてありがとう、本当に感謝しています:)。
java - 前置式を後置式に変換する
再帰を使用して前置式を後置式に変更するプログラムを実装しようとしています。
私はうまくいくと思ったものを書きましたが、代わりab/c*de+f*-
に得られる出力のaa/aa/*aa/aa/*-
代わりに。
String pre
の最初の文字を取得しようとしたとき、または の最初の文字を削除しようとしたときに、コードが動かなくなったと思いますString pre
。提案/コメントはありますか?
c++ - 小数点を使用したC++接尾辞の評価
操車場アルゴリズムを実装しました(ウィキペディアのコードを使用し、stlスタック/キューを使用するように変更しました)が、除算から取得した小数をどのように評価するのか疑問に思っています。scriptasylum.com(リンクできません)のjavascriptアプリは問題なく動作し、期待どおりの出力を提供します。
ここで接尾辞の評価の一例を見つけましたが、それは終了しておらず、小数点を考慮していませんでした。
これが私の現在のコードです:http://codepad.org/zDXnOELK
java - Javaを使用した接尾辞アプリケーションへの接中辞で間違った出力を取得する
私は最近、中置式を取り、それを後置式に変換するJavaプログラムを作成しました。ほとんどの場合は機能しますが、一部の式で間違った出力が得られます。たとえば、式a + b + c + d + eは、ab + c + d +e+を出力する必要があるときにabcde+++++を出力します。
24行目で<を<=に変更すると、この問題は修正されますが、空のスタックエラーが発生し、ab+cを出力するa+b*cなどの他の式が正しく出力されないことがわかりました。 *、abc*+であると想定される場合。
c - ファイルから読み取った行を使用してソリューションに後置する C プログラミング式ツリー
私は C プログラミングの初心者です。私はいくつかの答えに出くわしました。古い構文を使用しているものもあります。
問題は、テキスト ファイルを読み取り、読み取り後置行を使用して中置式に変換するプログラムを作成する必要があることです。
テキストファイルは次のようになります。
C ファイルは、テキスト ファイルが唯一の入力であり、出力が中置形式である Ubuntu ターミナルで読み取られます。
構造体、配列、および共用体を使用してこれを達成する方法に関するいくつかの提案。 構造体 opnode、vnode を作成し、それらを結合する形式は既に与えられています。配列部分 読み取りから配列自体に転送する方法がわかりません。現時点では、C は Java に比べて非常に奇妙です。
[編集]
申し訳ありませんが、これは宿題であることを忘れていました... infixへの後置ではなくなりました。方程式を解くのは後置です。
構文の事前知識がなく、オブジェクト指向プログラミングに慣れていないため、編集方法がわかりません。
/* これは、ターミナルに入力されたテキスト ファイルの文字列を読み取ります * 次に、テキスト ファイルを読み取るコマンド * など * その他すべてを実際に */
parsing - メソッド呼び出しを後置表記に変換するには?
私は楽しみのために言語のような JavaScript のコンパイラを書いています。別名、私はホイールについて学んでいるので、自分用にホイールを作成し、すべてを見つけようとしていますが、今は行き詰まっています.
単純な中置式を構文解析する場合、分路アルゴリズムが優れていることはわかっています。前置演算子と後置演算子についてもこのアルゴリズムを拡張する方法を理解することができ、単純な関数を解析することもできました。
例:2+3*a(3,5)+b(3,5)
に変わります2 3 <G> 3 5 a () * + <G> 3 5 b () +
(<G>
はスタックにプッシュされるガード トークンであり、戻りアドレスなどを格納します。()
必要な量の引数をポップアウトし、戻り時に結果をプッシュするスタックの一番上にある関数を呼び出す call コマンドです。)
関数名が 1 つのトークンにすぎない場合は、その直後に括弧を付ければ関数シンボルとして簡単にマークできます。プロセス中に関数シンボルに遭遇した場合は、それをオペレーター スタックにプッシュし、パラメーターの変換が終了したときにポップアウトします。
これはこれまでのところ機能しています。
しかし、メンバー関数を持つオプションを追加すると、.
演算子. 物事はよりトリッキーになります。たとえば、とは関数a.b.c(12)+d.e.f(34)
であるため、 I can't mark c と f を関数に変換したいとします。このような式でパーサーを開始すると、結果はどちらが明らかに間違っているかになります。私はそれが正しいように見えることを望みます。しかし、括弧をいくつか追加すると、事態をより複雑にすることができます。または、もう一度呼び出す関数を返す関数を作成します。a.b.c
d.e.f
a b . <G> 12 c () . d e . <G> 34 f () .
<G> 12 a b . c . () <G> 34 d e . f. ()
(a.b.c)()
f(a,b)(c,d)
これらのトリッキーな状況を処理する簡単な方法はありますか?
c++ - 中置式と後置式に C++ でスタックを使用する
ユーザー入力を受け取り、スタックを使用して優先順位に基づいて中置式を後置式に変換するプログラムを作成しています。オペランドは常に演算子の前に置かれます。たとえば、ユーザーが次のように入力した場合:
(a+b*c)
次に、プログラムは次のように表示されます。
abc*+
これまでのところ、私はこれを持っています:
コンパイルして実行しますが、正常に機能していません。「ab」のような式を入力すると、本来「ab」と表示されるのですが、「a+b+c」と入力すると「a」しか表示されません。これは、後で表示するためにプログラムが演算子をスタックに配置していないことを意味します。私が助けを必要としているのは、プログラムを変更して、演算子が入力されたときにスタックに追加され、入力が完了したときにオペランドの後に優先順位 (*>/>+>-) に基づいて表示されるようにすることです。
私は一般的にC++とプログラミングにまったく慣れていないので、どんな提案でも素晴らしいでしょう.