0

多項式関数 f(x) があり、ユーザーの選択に応じて、この式を式 g(x) または h(x) のいずれかに使用したいとします。これは可能ですか?

例えば

int main() {

   float fexpression = /* polynomial function f(x) here */;    

   /* some code where user picks g(x) or h(x) */

   if (/* gexpression == true */)
        cout << gfunction(fexpression);
   else /* h expression == true */
        cout << hfunction(fexpression);

return 0;
    }

 float gfunction(float j){

     float var = /* some function representing g(f(x)) == g(j) */;
  return var;
  }

 float hfunction(float j){
       float var = /* some function representing h(f(x)) == h(j) */;
  return var;
      }

次のような式である変数を渡すことができるのは、私には正しくないようです

float fexpression = ....
4

2 に答える 2

3

関数ポインタが必要です。

式を関数にします。

float fexpression( float x )
{
   return (5*(pow(x,4))) + (3*(pow(x, 3))) + (10 * x) - 5
}

このコードは、あなたが書いたように、機能自体を渡します。

   if (/* gexpression == true */)
        cout << gfunction(fexpression);
   else /* h expression == true */
        cout << hfunction(fexpression);
于 2013-02-07T03:36:58.797 に答える
3

ドリューの回答のコメント欄で詳しく説明しようとしたのですが、フォーマットで迷ってしまいました…別の回答を始めなければなりませんでした。

@DrewDormanは、式を関数として定義するだけでよいと言っているのは正しいです。

float fexpression( float x )
{
   return (5*(pow(x,4))) + (3*(pow(x, 3))) + (10 * x) - 5
}

(あなたにとって)欠けているのは次のとおりです(Drewのリンクを読むことで得られるでしょう...):

次のように定義gfunctionします(たとえば)

float gfunction(float (*funcp)(float)) {
    // lots of stuff to determine the value of x
    return (*funcp)(x);
}

これは、gfunctionが多項式を評価する方法です。似たようなことをするhfunction

gfunctionを呼び出すときは、fexpression次のように参照する必要があります。

cout << gfunction(&fexpression);

&問題...それはドリューの答えにも欠けていた。

于 2013-02-07T04:18:00.603 に答える