問題タブ [shunting-yard]
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# - C#インフィックスからポストフィックスへのコンバーターは、ほとんどの場合正しい答えを与えない
私はInfix
toPostfix
コンバーターを作成し、それが機能すると思いましたが、戻って先生に見せたところ、彼がテストした例の 1 つが間違っていることがわかりました。:|
誰かがこの問題について私を助けて、何が悪いのか教えてくれたらありがたいです。
数字を入力するボタンの部分は飛ばして残りの部分だけ載せましたが、
上記の部分は、aconsole.writeline
をテキスト ボックスにリダイレクトするためのもので、そのボタンはすべての作業を行い、最終結果をもたらします。
メインクラスは次のとおりです。
}
失敗する入力は次のとおりです。
A^B^(CD/(E+F))-(G+H)^L*Z+Y
正しくないこのコードの結果:
ABCDEF+/-^^GH+-LZY+*^
正しい結果:
ABCDEF+/-^^GH+L^Z*-Y+
java - この Shunting-Yard アルゴリズムのステートメントは何を意味するのでしょうか?
ウィキペディアのページの疑似コードに基づいて、シャンティング ヤード アルゴリズムを開発しようとしています。
操作の状態の 1 つ:
トークンが関数の引数の区切り文字 (コンマなど) の場合 [...]
誰かがこれが何を意味するのかを明確にしてもらえますか?
compiler-construction - 逆ポーランド記法 (RPN) を使用した算術式の評価
数式は通常、中置記法で表されます。評価目的で、後置 (リバース ポリッシュ) 表記に変更し ( Shunting-Yardなどのアルゴリズムを使用)、スタックを使用して後置表記を評価できます。
計算機がこの手法を使用していることがわかりましたが、今日の最新のコンパイラはこれを算術式の評価に使用していますか? それは十分に効率的ですか、それとも他の手法 (またはアルゴリズム) が使用されていますか?
java - Java を使用してタブなしでコンソール テキストのスペースを空ける
ちょっと私は現在Javaで式計算機を書いています。私は今それを機能させましたが、端末に書き込むスペースを空ける方法がわかりません。私が望むのは、2つのリストが隣り合っていることです。私はもともとタブを使用していましたが、配列が大きくなる可能性があるため、他のタブを移動します。これが私が今得たものです:
私が達成したいことは次のとおりです。
スタックと出力バッファを出力するために現在使用しているコードは次のとおりです。
algorithm - 分流場アルゴリズムを使用した抽象構文木
トークン化した中置式があり、抽象構文ツリーの作成に進みたいと考えています。私は、これらのケースで使用される分譲地のアルゴリズムを理解しています。中置式を AST ではなく RPN 形式に変換する方法だけを見つけました。最初に RPN バージョンを作成し、次にそこから AST を作成することもできますが、不要のようです。
私が選んだ言語は JavaScript ですが、任意の言語の例やアルゴリズムの説明を見るだけで十分です。私は Dragon Book と Terence Parr の本に目を通しましたが、どちらも私が探していた答えを与えてくれませんでした.
java - Java で中置文字列をトークン化する
AP コンピューター サイエンス クラスのサイド プロジェクトとして、Shunting Yard Algorithmを Java で実装しています。基本的な算術式 (加算、減算、乗算、除算、累乗) のみを使用して、Javascript で単純なものを実装しました。それを配列に分割するために、各演算子 ( +-*/^
) と数字と括弧を見つけて、それらをスペースで囲み、それを配列に分割しました。たとえば、中置文字列4+(3+2)
は になり4 + ( 3 + 2 )
、空白で分割されます。
ただし、この方法は非常に遅く、サイン、コサイン、タンジェント、絶対値などの数学関数を追加し始めると、実装がますます難しくなり、非効率になると思います。
sin(4+3)-8
文字列を配列に分割する最良の方法は何["sin","(" 4,"+",3,")","-",8]
ですか?
これには正規表現を使用できますが、よくわかりません。学習しようとしているので、それが最善の解決策である場合、回答者はそれが何をするのか説明してもらえますか?
c++ - 接頭辞の実装への分流ヤードアルゴリズムのインフィックス
中置式を後置式 (RPN) に変換するための分路アルゴリズムを C++ で実装することに成功しました。プレフィックス (ポリッシュ) 式を返すようにアルゴリズムを変更する必要がありますが、その方法がわかりません。
c++ - C++ での Dijkstra の Shunting Yard アルゴリズム
私の宿題として、文字列として与えられた方程式を計算するプログラムを書かなければなりません。プログラムの一部は、中置式を後置式に解析する関数です。これが私のコードです:
問題は、4/6 のような方程式を除くすべての条件で機能することです。何か案は?リクエストされた更新を行いました