2017-05-14 6 views
1

私は派生電卓を作ろうとしています(リンクリストを使用する必要があります)。LinkedList C++を使用した派生電卓

次のようにすべてのノードの構造は次のようになります。

struct node { 
    int coefficient; 
    string function; 
    int power; 
    node*fx; 
    node*gx; 
    node*next; 
}; 

|係数|関数|パワー| f(x)| g(x)|次へ|


入力表現例:

3X^2((3X-3)/(4×2))+ SIN(4X-3)

係数*機能^力(F (X)/ G(X))+次


私は正規表現を使用してみましたが、ユーザが機能未知の数を投げるかもしれないので、それは、ネスト式に来るとき、それはで動作するように簡単ではありません。

私は何とか式を解析し、すべてをベクトルに分割してノードを埋めなければならないことを知っていますが、私はC++をかなり新しくしているので、そのロジックをコード化できません。

また、ExprTkで作業してみましたが、わかりにくいとわかりました。付属のreadmeファイル以外のオンラインチュートリアルは見つかりませんでした。

誰かが私を適切な方向に導くことができたり、偉大なチュートリアルを表示することができます。

+0

括弧を無視して入力を分けることができますので、 'coefficient * function^power(f(x)/ g(x))'のリストを扱うだけです(分割しないでください'+'が含まれている場合は 'f(x)'または 'g(x)')を使用して、解析関数または正規表現が任意の数の関数を処理する必要はなく、 'f(x)'、 'g(x)'、 'next'を埋め込む関数です。 – nwp

+0

ありがとうございます!それは入れ子の問題を解決します。 – Mincer

答えて

0

私はregexpで動作可能だと思いますが、正しい順序で入れなければなりません。

3x^2((3x-3)/(4x-2))+ sin(4x-3)→3x^2((3x-3)/(4x-2))+ sin (n1)→3x^2((3x-3)/ n2)+ sin(n1)→3x^2(n3/n2)+ sin(n1)→...

などあなたは、メモリ内の新しいノードを作成し、文字列でそれを残して、各ステップに

- >機能= +

\ D- \ D - - >機能=

\ dは+ \ D:このようregexで「n%nodeNum」とも呼ばれます。

+0

ありがとう!私は今それのハングアップを得た。 – Mincer

関連する問題