0

アルキメデスの方程式に基づいて円周率の近似を作成する必要があります。私はモードと再帰モードでそうする必要があります。forモードでは、上記のようなsthを作成しました。

  double Pi_approximation(double r, double L){

   int i;
   double fin;
   double y;

   for(i=1; i<4; i++){

           y =sqrt(2*((r*r) - r*(sqrt(4*((r*r) - (L)))))); 

           L = y;
           printf("%f \n", L);
   }

   return y;
}

私の問題はforの2番目のループにあります。最初のyは通常どおり計算されますが、2番目のループではyとLを出力すると、ポインターが出力されます。何か案が?

4

2 に答える 2

4

何が起こっているのかを確認するのは難しいですが、とにかく推測します!ほとんどの場合、呼び出しの1つに渡す値sqrt()は負です。これが発生すると、y(したがってL)はになりますNaN。その場合、出力はコンパイラに依存します。たとえば、私のコンパイラでは、出力は次のとおりです。

-1.#IND00
于 2012-03-06T15:03:38.363 に答える
0

おそらく、他の部分でメモリリークなどが発生してコードが破損した可能性があります...コードだけで機能しているようです。

于 2012-03-06T15:08:53.510 に答える