1

基本的な微積分関数を実行するプログラムを C++ で作成しています。これらの関数を実行する方程式を作成するために、次のコードを使用しています。

float equationone(float x)
{
    return  sqrt(x);
}

float equationtwo(float x)
{
    return (x * x);
}

ユーザーが次のようなものを入力しsqrt(x)たり(x*x)、関数が適切な答えを返すように、コードをどのように適応させることができるか疑問に思っています。

4

2 に答える 2

2

すぐに括弧や演算子の優先順位などが必要になるため、それほど簡単な作業ではありません。パーサーを作成する必要があります。ゼロから作成する方法を知りたい場合は、 antlrを探してみてください。基本的に、手動で作成するのは簡単ではないコードを作成するツールを委任します。もちろん、文法定義の書き方を学ぶ必要がありますが、おそらく将来的には報われるでしょう。代わりに、スクリプト言語を使用して短期間で実際の顧客にサービスを提供する必要がある場合は、c++ 以外のものを探すことを検討してください。 Stackoverflow に関するこの他の返信をご覧ください。

于 2013-05-24T05:09:57.327 に答える
1

文字列をコンポーネント (数値、演算子など) に分割するパーサーを作成し、リバース ポリッシュを使用して処理する必要があります。このページには、中置記法を逆ポーランド記法に変換する方法に関するリンクがあります。LEX/YACCは、解析ビットを実行するのに役立ちます。

于 2013-05-24T05:31:18.100 に答える