私はユーザーが入力した数式の値を計算するコードを作ろうとしました。つまり、ユーザーが「10 + 5」を入力した場合、プログラムは「The sum is 15」などを印刷します。最初は、これは簡単なことだと思っていましたが、scanf orsthを使用するだけでは、 。それから、配列とループを使ってループが遭遇したかどうかを確認し、 " - "または "+"の前に文字を保存した後、 " - "または "+"いずれかの作業。 これをどうやって行うかについて、正しい方向に私を導いてください。 ありがとうございます!入力の計算。
入力の計算。
答えて
これは非常に複雑になります。特に、演算子の優先順位を得て、たとえば2 + 5 * 6
を正しく計算する必要がある場合は、2 + (5 * 6)
として処理する必要があります。これに近づける正しい方法は、(コンパイラのように)式ツリーを構築することです。例えば
+
/\
2 *
/\
5 6
これは、バイナリツリーを作成することで行います。各ノードは、操作と(2つまでの)サブノードを保持します。次に、式ツリーをトラバースして式を評価します。
は、算術式を解析して評価します。これはインターネット上に大量のものがあるので、これはあなたの宿題なので、Googleにお任せします。これが簡単なあなたの最初の考えは、おそらくあまり素朴な考えではありませんが、あなたがあまりにも野心的に過度に野心的になっていなければ、それは難しい問題ではありません。
ご返信ありがとうございます。私はそれをgoogledしたが、検索の10分後に何の答えも見つからなかった。私はプログラマーの終わりと技術的な言葉が本当に分からないので、私の検索は非常にシンプルであり、あまり具体的ではないからかもしれません。 btw、これは私の宿題ではありません。私はこのフォーラムに参加している人たちの前で、私はそのような質問に宿題としてタグを付けるべきだと私に言いました。 ありがとうございます。ネットを検索して算術式の解析を試み、見つけたものを見てみましょう。 – geekkid
こちらをご覧くださいhttp://stackoverflow.com/questions/4589951/parsing-an-arithmetic-expression-and-building-a-tree-from-it-in-java – scibuff
これはあなたの頭を少し上回っているかもしれませんが、できることはcと字句解析ツール用の文法エンジンを使用することです。
私は学校で覚えているから
それは「BISON」と「yylexの」と呼ばれていると信じて、それは我々のPascalコンパイラを作った方法です。ツリーを作成した後
http://en.wikipedia.org/wiki/GNU_bison
。次に、サブツリーを分析して、ルートノードをサブツリーの合計にします。
これらは、使用
- が始まり
- から文字列を読み込む
- 開始は2回のパスを行うのgetline()またはfgetsの()を使用して入力を取得検討する必要がありますいくつかのステップがありますオペレータ用のキューとオペランド用のもう1つのキュー
- 最初のパスで*または/に到達し、次の番号を読み込み、次の番号と以前に読み込んだ番号に対して操作を実行し、待ち行列
- また、最初のパスで+または - を読むと、オペレータとオペランドを静かにそれぞれのキューにプッシュします。
- 2番目のフェーズで+と--...キューを使用すると、連続するマイナスを適切に処理するのに役立ちます。
これらの4-3-3は、手順を正確ではありませんが、それはに探して発見的価値がある - これらを介して動作しようと、
は- 1. 入力ボックス間の計算
- 2. HTML-Javascriptの入力 - 計算 - 出力
- 3. Java GPAアレイスキャナの入力と計算
- 4. エクセル - 複数の入力から計算の出力結果
- 5. 計算出力=ナノ?
- 6. MySQLの計算能力
- 7. 入力フィールドの動的数の割合を計算する
- 8. 計算機への電力関数の導入
- 9. 他の入力値に基づいて計算された入力値に基づいて合計を計算します
- 10. 入力と日付のオブジェクトから年齢を計算する
- 11. Jquery:隠された入力の幅を計算する
- 12. SOタグエディタの入力幅を計算する
- 13. セルに値を入力し、表示値の計算式を
- 14. 電子メールアドレスの入力速度を計算する
- 15. JQueryを使用した入力フィールドの単純なパーセンテージ計算
- 16. HTML入力フォームの内容を計算に渡す
- 17. Verilogで低電力回路設計と異なる入力シーケンスの電力を計算
- 18. コンストラクタを使用してユーザ入力を比較/計算する
- 19. フォーム入力を計算して画面に表示する
- 20. 計算Androidのセンサーの消費電力
- 21. AngularJS:入力値の合計
- 22. CoreBluetooth IOSの計算送信電力レベル
- 23. BATCH入力リダイレクション演算子
- 24. Matter.js必要な力を計算する
- 25. 磁力計とジャイロスコープによる北の計算
- 26. フォームの既定値に計算値をあらかじめ入力する
- 27. TextBlockのフォントサイズを計算してCanvasに入力する方法は?
- 28. データベーストリガー挿入前と計算は
- 29. 集計の計算
- 30. 算術計算
式の評価が通常行われているものなど、あなたに理にかなっているに応じてそれらを変更中置表記法(例えばa + bの場合)を後置記表(例えばab +の場合)に変換し、それを評価することによって、それは初心者のために少し以上のことですが、あなたがそのアイデアを手に入れたら簡単です。 – vaisakh