-2

これはちょっとしたクレジットです。私は平方根を計算するための単純な C プログラムを手に入れました。最初は、プログラムはそれらを無限に計算して逃げていたので、変数の値をチェックする条件が必要でした。それが i+ より小さいか等しいかどうか(9^32) をループして終了を印刷しない場合。

残念ながら、if条件を正しく機能させることができないようです

何か提案があれば、それは素晴らしいことです

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char *argv[])
{
  int m, i;
  if ( argc > 1) {
    m = atoi(argv[1]);
  } else {
    m = 1;
  }
for( i = 1; i <= i+1; i++)  {
    double param, result;
    param = i;
    result = sqrt (param);
    printf ("sqrt(%lf) = %lf\n", param, result );
    sleep(0.5);
  }
  if( i <= (i + pow(9,32))
  { return (0); }
  else {  printf("end");
  }
}
4

2 に答える 2

0

forループのテストに条件を追加します。

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

注 1:

おそらくもっと早くにやめるべきです: 9^32 に十分な大きさのint(or ) 型を持つコンパイラはほとんどありません。double最大値に置き換えましたint

注 2:

現在の状態では、オーバーフローi <= i+1するまでコードがループします。iオーバーフローは未定義の動作を引き起こしますが、ほとんどの実装でiは負の値にラップしてループを終了させます。

于 2012-10-11T13:08:15.367 に答える
-1

浮動小数点の精度について調べる必要があります。ヒント:double実装される数値は、数学で使用される「実数」の実数とは異なります。制限があり、9 32doubleは非常に大きな数です。これを別の数に加算して精度を維持できるかどうかは定かではありません。

于 2012-10-11T13:07:51.113 に答える