dポイントプレゼントキャンペーン実施中!

Cを用いてプログラムを製作しています。
そこでバグが発生し、突き詰めていくと割り算が出来ていないことが原因であることが
わかりました。

どのように修正すればよいのでしょうか、ご教授お願いいたします。


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

int i;
double ENGx,dENG;

main(){

dENG=0.01;

for( i = 0; i<= 100000; i++){
  ENGx = (double)i * dENG;
  printf("%e\n",2.0/sqrt(ENGx));   ←2.0/にしなければ大丈夫なのですが。。
                          powを用いずに解決できないでしょうか?   
  }
  return(0);
}

A 回答 (2件)

0 で割ってはいかんです。



計算する範囲から外すか、特別扱いするか、式を見直すかしましょう。
    • good
    • 0

#1でも言われていますが、i = 0のときにENGxが0なのでその平方根も0、つまりループの最初で0除算が生じている訳です。


0のときは計算から除外する、特定の結果をあらかじめ与えるなど特殊扱いにするしかないでしょう。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

非常に初歩的なミスでしたね。
お手数おかけいたしました。

お礼日時:2010/11/17 19:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!