2016-06-16 14 views
-1

私はC++を初めて使用しています。私はValueを計算するコードを作っていますが、前回の計算で計算した値を取得する方法についてはわかりません。私の理解では、値を配列に格納する方法がありますが、実際の構造や方法についてはわかりません。前もって感謝します。私は強くグローバル/静的変数を避けて助言する以前に計算した値を保存して取得する方法

double CalculateValue(Node* node) 
{ 
float gamma=0.3; 
double Value = 0.0; 

Value = ((1-gamma)* previousValue)+ gamma); // how to get this previous value 
if (Value > previousValue) 
+1

'static'が助けになるかもしれませんが、それをクラスにカプセル化してメンバーを使う方が良いようです。 – Jarod42

+1

コードフィボナッチシリーズプログラム、あなたはそれを学ぶ!約束します! – Ajay

答えて

1

は、それはおそらくちょうど値を格納し、計算を行うためのメンバ関数を持っている小さなクラスを作成するには良いアイデアです。

0

は、関数への2つの呼び出しによって返された値の違いを見つける必要がある場合は、この線に沿って何かがトリックを行う必要があります。 { const auto val1 = CalculateValue(); const auto val2 = CalculateValue(); std::cout << "Difference is: " << std::abs(val1 - val2) << std::endl; }

0

あなたはmemoizeパターンを探している(いませんあなたがそれについてグーグルであるならば、暗記してください)。これは便利来るかもしれない:Memoized, recursive factorial function?

0

をここで

class Solution { 
public: 
    void init_value(double val){ // initalize the value 
     _previousValue = val; 
    } 
    double CalculateValue(Node* node){ 
     float gamma=0.3; 
     double Value = 0.0; 

     Value = ((1-gamma)* _previousValue)+ gamma); // _value would be your previous value 
     if (Value > _previousValue){ 
      //whatever you want to do in here 
     } 

     _previousValue = Value; // set _previousValue to the new calculated Value 
     return Value; 
    } 
private: 
    double _previousValue; // call init_value(val) to initliaze _previousValue = val OR you can hard code _previousValue if it is always like 0 or something 

}

(私はそれをテストしていないので、ここにあるいくつかのバグがあるかもしれません)あなたの目標 を達成するためのクラスを使用する例です
int main() { 
    Solution solution = new Solution(); 
    solution.init_value(0); 
    Node *node; // I don't know what your Node struct looks like so... 
    double value = CalculateValue(node); 
    return 0; 
} 
関連する問題