問題タブ [rpn]

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.

0 投票する
1 に答える
236 参照

c - C で MPC ライブラリを使用して解析すると、最初の番号のみが返されます

C 用の MPC (Micro Parser Combinator) ライブラリを使用して逆ポーランド記法パーサーを作成しようとしています。フルAST。

文法:

解析:

入力:

出力:

このような入力は、最初の数だけを読み取ります (たとえば、'54 8 /' は 54 のみを出力します)。何か案は?

0 投票する
1 に答える
744 参照

python - 分流場アルゴリズムの複雑な式で電卓エラーが発生する

ここに見られるように、私は分流場アルゴリズムを実装しました:

「3 + 4」などの単純な式には問題なく機能しますが、複雑なものを入力すると、次のようになります。

$ ./rpn.py

-> 4 - 5 * 6 + 3 ^ 2

(エラー) 値が多すぎます

事前に感謝します。助けていただければ幸いです。

0 投票する
1 に答える
140 参照

c++ - 実行時に RPN から関数呼び出し可能なオブジェクトを構築する

ストリーミング データに対して特定の操作を実行するプログラムを設計しています。操作は、実行時に提供される RPN (逆ポーランド記法) 式によって定義されます。データは、一度に 1 つの固定サイズの部分で、ファイル ソースからストリーミングされています。操作は、データの現在入力されている部分の一部を参照しますdata[1]。プログラムは、同じ操作をすべての入力部分に適用します (そして結果をストリーミングします)。

数値と算術演算を操作して結果を返す RPN パーサーを実装するのは非常に簡単です。ただし、そのような実装を使用すると、データ部分ごとに RPN を再解析することになります。

私が実装したいのは、プログラムが入力データを提供する(または入力を埋める)、オブジェクトのoperator()結果を取得して出力します。

そのようなクラス (a ) をどのように実装callable expressionし、「最新でない」C++ (noC++11またはC++14) を使用してそのようなオブジェクトを構築しますか?

0 投票する
1 に答える
118 参照

scala - Scalaで2つの異なるデータ型を持つRPN式を計算するには?

Float次のプログラムは、 と の 2 つの異なるデータ型を持つ可能性がある式を計算することを想定していますRDD。既に中置式から RPN を作成しており、現在、それらに対して計算を実行しようとしています。RDD注:とで計算を行うために :+,-,/,* もオーバーロードしましたfloat

私はこのコードが醜いことを知っています。短くすることはできますが、今はそれを機能させてからブラッシュアップする必要があります! したがって、** の部分では 2 つの数値に対して機能していますが、*** を追加して同様に受け入れRDDられるようにしました。と の両方で機能するかどうかはわかりませFloatRDDEitherさらに、 and を使用しているため、明らかLeftに次のエラーに直面しており、Rightここで私を助けていません!

私も試しScalazましたが、より複雑になりました。

0 投票する
1 に答える
392 参照

c - K と R の逆ポーランド記法

関数がどのように呼び出されるかを理解できません。

Input 1 2 3 + + [Enter] //入力の間にスペースがあることに注意してください

Output 6 //これは正しい

1 -> プログラムのコンパイル時 while ステートメントが関数 getop(s) を呼び出します。

2 -> getop() 関数では、getch() 関数が呼び出され、次に getchar() が呼び出されるため、このステップでは入力として 1 を読み取り、それを返します。

3 -> c が数字であるかどうかをチェックし、それが true であるため、再び getch() を呼び出してスペースを読み取り、その値を返します。次に、false と評価される数字であるかどうかをチェックし、次に移動します。次の発言。

4 -> 最後に ungetch() が実行され、バッファに 1 が保存されます

このステップでは、入力がどのように読み取られているか、および getch と ungetch の使用方法を理解できません

プッシュとポップ関数の定義は簡単なので書いていません

0 投票する
1 に答える
483 参照

.net - 複数のブール式の後置式を正しく組み合わせるにはどうすればよいですか?

後置と中置の間で変換し、再び元に戻すコードをいくつかまとめました。今、私は別々の後置式を取り、それらを結合しようとしています。

私の式はブール演算子 (NOT、XOR、AND、OR) のみを使用しています。

式の数字は、最終的に true または false に評価されるルールを参照していることに注意してください。

現在、NOT を含む式を組み合わせると問題が発生します。

たとえば、AND を使用して、次を 1 つの後置式に結合したいと考えています。

現在、これに対する私の出力は次のようになります。

しかし、これを中置に変換すると、(誤って) これが得られます (先頭の & に注意してください):

これが式を結合するために使用されるコードの不足なのか、それとも後置から中置への変換の不足なのかはわかりません。

上記の最初の 4 つの式の AND 結合の正しい後置式はどれでしょうか?

私の問題は、変換ルーチンまたは組み合わせルーチン (またはその両方) で NOT 演算子を正しく処理していないことだと思います。

以下に組み合わせコードを示し、その後に変換コードを示します。

組み合わせ:

変換:

アップデート

以下は、マークされた回答に起因するコードの変更 (変換ルーチン内) です。

これを置き換えます:

これとともに:

0 投票する
2 に答える
95 参照

java - 中置から後置へのコンバーター、正しい答えを出力しない

私はこの情報を与えられた学校のプロジェクトを手に入れました:

私はこれらの手順を正確に実行してきましたが、私の出力は数回しか正しくなりません。演算子を使用したifステートメントのどこかで間違っていると思います。私は2日間常にデバッグを続けてきましたが、解決策が見つかりません。

誰かが私のコードをチェックしてくれたら、とてもうれしいです。operatorCheck 関数は、これを解決するために作成されました。「サブルーチン p を使用して、演算子の優先度を指定します。

. これは、足し算と引き算は、掛け算と割り算よりも優先度が低いことを意味します。」

コード: http://pastebin.com/TA7UGiGc

ありがとうございました!

0 投票する
1 に答える
541 参照

java - Postfix (RPN) Java での数式の評価。スタックなし、文字列のみ

サブルーチンを使用して、次の命令を理解しようとしています。

私は= 1

i <= nの間

v_i がオペランドの場合: v_i を tmp2 にプッシュします。

v_i が演算子の場合: tmp2 の上位 2 つの要素に v_i を適用します。これらを tmp2 の結果に置き換えます。

i = i + 1 tmp2 からの出力結果。

したがって、基本的には、postfix(RPN) 形式で式を計算しようとしています。ここで、数字がオペランド(数値)である場合はいつでもtmp2に転送し、演算子がある場合はtmp2の値で置き換えます。例: 3 5 1 +8 / 14* = 14

その他の問題: 何を書いても、"Exception in thread "main" java.lang.StringIndexOutO...." エラーが発生します。v_i は、数字、演算子、または括弧です。

前もって感謝します!

私のコード: