2

私のプロジェクトでは、ユーザーからの式入力を文字列として取得し、式の結果を表示する必要があります。私は次のように入力を取っています

char address[100] = {NULL};
fgets(address, 100, stdin); //take the expression as input here

ユーザーが式を次のように書いたとします

address = " 1+5+9" . 

私がする必要があるのは、式の結果を表示することです。これを行うには、各数値を分離してから計算を行います。しかし、これを行うためのより良い方法はありますか?

4

2 に答える 2

3

evalJavaScriptのようなものに相当する C++ を探しているようです。残念ながら、C++ にはそれがありません。手で式を解析するのが最善の方法です。

The C++ Programming Language book にアクセスできる場合は、第 6 章で、同じ問題を解決する簡単な計算プログラムを作成する方法について説明しています。

于 2012-06-19T12:59:57.887 に答える
0

これを行うにはいくつかのアプローチがあり、最も一般的な方法の1つであり、私の個人的な意見では、最もエレガントな方法は、再帰下降パーサーを使用することです。Web上でこれを行うための便利なガイドがたくさんあります。簡単なグーグル検索は私を導きました:

また、これらのスタックオーバーフローの投稿:

単純に数値を分離してから計算を行う場合の問題は、乗算を許可するときに発生する問題であり、通常は演算子の順序を考慮する必要があります。

于 2012-06-19T13:04:38.483 に答える