前提・実現したいこと
c言語で数え上げ法による平方根を求めるプログラムを書いています。
発生している問題・エラーメッセージ
一つ目のコードではうまくいかず、解が1.000になってしまいました。何が間違っているのかわかりません。 二つ目のコードではうまくいき、近似値として1.733が得られたのですが、なぜうまくいったのかわかりません。i<Nまで続けるという条件文ではxの値はどんどん大きくなってしまいfx>=0という条件文のif文では返されるxの値はどんどん大きくなってしまうのではないですか。なぜ正しい解が得られるのでしょうか。
該当のソースコード
c言語 ソースコード一つ目 #include <stdio.h> #include <math.h> double root(double n){ int a=1; int i=0; double fx, x; double d = 0.001; while(fx<=0){ x=a+i*d; fx=pow(x, 2)-n; i++; } x=a+i*d; return x; } int main(void){ double x; int n; printf("n> "); scanf("%d", &n); printf("%.3f\n", root(n)); return 0; } ソースコード二つ目 #include <stdio.h> #include <math.h> #define N 1000000 double root(double n){ int a=1; int i=0; double fx, x; double d = 0.001; while(i<N){ x=a+i*d; fx=pow(x, 2)-n; i++; if(fx>=0) return x; } } int main(void){ double x; int n; printf("n> "); scanf("%d", &n); printf("%.3f\n", root(n)); return 0; }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/20 15:10
2021/03/21 09:40