0

このコードを実行しての平方根を計算してx[i][j] - y[j]いますが、意味がありません。

     bool X[I][J]={};   //nodes
     bool Y[J]={};      //medians

    double denominator=0;
    double miu=0;
    outFile<< "denominator= " << denominator << endl;
    for(i=0;i<I;i++)
        for(j=0;j<J;j++)
        {
            denominator+=sqrt(double (X[i][j]-Y[j]));
        }
    outFile<< "denominator= " << denominator << endl;

最初outFileの値は元の値である0を出力しますが、2番目の値はを出力し-1.#INDます。

4

5 に答える 5

2

これはおそらく、ある時点X[i][j] - Y[j]で負の値であり、からNaN(数値ではない)を取得していることを意味しますsqrt

NaNの説明については、このウィキペディアのページを参照してください。

また、XYはブール値の配列であるため、X[i][j] - Y[j]常に1、0、または-1になり、実際には。は必要ありませんsqrt。これは、あなたの望むことですか?

于 2012-02-27T04:09:13.247 に答える
0

問題は、負の数の平方根をとることができないことです-虚数を取得します。abs最初に差の絶対値を取得するために使用するだけです。

bool X[I][J] = {};   // nodes
bool Y[J] = {};      // medians

double denominator = 0;
double miu = 0;
outFile << "denominator= " << denominator << endl;
for(i = 0; i < I; i++)
    for(j = 0; j < J; j++)
    {
        denominator += sqrt(double (abs(X[i][j]-Y[j])));
    }
outFile << "denominator= " << denominator << endl;
于 2012-02-27T04:07:53.467 に答える
0

あなたが負の数の平方根を取っているように見えます-あなたが見る値につながります、それは本質的に「数ではない」を意味します

于 2012-02-27T04:09:56.867 に答える
0

XとYはどちらもブール値であるため、sqrt()に渡される引数が負になる可能性があります。

于 2012-02-27T04:12:01.313 に答える
0

私はあなたがするのと同じ結果を得ることができません、私は両方のためにゼロを得ます。

http://ideone.com/25ZPf

両方の配列の初期化子はすべての値をゼロに設定する必要があるため、減算の平方根もゼロにする必要があります。値が0.0にアップキャストされるため、ブール配列であるという事実は重要ではありません。

投稿したコードが、エラーの原因となっている実際のコードではないことがわかりました。

于 2012-02-27T04:29:38.663 に答える