0

これまでの私のコードは次のとおりです。私は間違った答えを得続けているので、何か間違っているようです。2 3.0 1.0 の形式のテキスト ファイルに書き込んでいます。

2 は配列のサイズで、3.0 と 1.0 は係数です。うまくいけば、私は私の説明をあまり見逃しませんでした。どんな助けでも大歓迎です。ありがとう

double polyeval(double* polyarray, double x, int arraySize)
{
    //int result = 0;

    if(arraySize == 0)
    {
        return polyarray[arraySize];
    }

    //result += x*(polyarray[arraySize]+polyeval(polyarray,x,arraySize-1));
      return polyarray[arraySize-1]+ (x* (polyeval(polyarray,x,arraySize-1)));
       //return result;
}

int main ()
{
    int arraySize;
    double x;
    double *polyarray;

    ifstream input;
    input.open("polynomial.txt");
    input >> arraySize;
    polyarray = new double [arraySize];
    for (int a = arraySize - 1; a >= 0; a--)
    {
        input >> polyarray[a];
    }

    cout << "For what value x would you like to evaluate?" << endl;
    cin >> x;
    cout << "Polynomial Evaluation: " << polyeval(polyarray, x, arraySize);

    delete [] polyarray;
}

サイズが異なるその形式のテキストファイルを読み込むと、ユーザーが指定した任意の値 x を解決するという考え

4

4 に答える 4

0

勝手な推測でどうぞ

for (int a = arraySize - 1; a >= 0; a--)
//                            ^^
{
    input >> polyarray[a];
}
于 2013-04-17T04:16:37.427 に答える
0

ここに 1 つのエラーがあります。

for (int a = arraySize - 1; a > 0; a--)
{                             //^^should be a >=0 
    input >> polyarray[a];
}

このようにいくつかのエントリがありません。

再帰関数は次のようになります。

int polyeval(double* polyarray, double x, int arraySize)
{
   if(arraySize == 1)
   {
      return polyarray[arraySize-1];
   }

   return x*(polyarray[arraySize-1]+polyeval(polyarray,x,arraySize-1));
}
于 2013-04-17T04:16:46.327 に答える
0

問題は主に多項式係数の定義にあります。コードは、次の形式の多項式を想定しています。

x( p(n) + x( p(n-1) + x( p(n-2) + ... x(p(1) + p(0)))..))

この行:

result += x*(polyarray[arraySize]+polyeval(polyarray,x,arraySize-1));

次のようになる必要があります。

result += pow(x,arraySize)*polyarray[arraySize]+polyeval(polyarray,x,arraySize-1);

このようにして、多項式は p(n)x^n + p(n-1)x^(n-1) ... + p1 x + p0 として正しく定義されます。

于 2013-04-17T04:37:02.837 に答える