- ベストアンサー
c プログラム
以下のプログラムは,第n項までのe^xのマクローリン展開をさせるものです. これを修正して,理論値と近似値の誤差がある値(自分で入力)になったときに,計算を終了させるにはどうしたらよいでしょうか.御教授いただければ幸甚 です. ---------------------------------------- #include <stdio.h> #include <math.h> int main(void) { int n; double x=1.0,y=1.0,e=1.0,err; int i; double f=1.0,p=1.0; printf("x="); scanf("%lf",&x); printf("n="); scanf("%d",&n); printf("Mclaurin展開によるn項までのexp(x)の\n n 理論値 近似値 誤差\n"); for(i=1;i<=n;i++){ f*=(double)i; p*=x; y+=p/f;近似値 e=exp(x);理論値 err=e-y;誤差 printf("%2d %12.8e %12.8e %12.8e\n",i,e,y,err); } return 0; }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
1)第何項まで計算するかはわからなくなりますので、nの入力を省きます。 2)理論値と近似値の誤差のしきい値を入力するようにします。 3)for文によるループを、n回まわるのではなく無限ループにします。 4)errが、2)で入力しておいたしきい値以下(もしくは未満)になったら、無限ループから脱出します。
その他の回答 (1)
- piro19820122
- ベストアンサー率38% (256/672)
そういうときこそ while文でしょう。 nを入力する代わりに、誤差の条件を入力させる。 forの代わりに、while(err>条件)とする。 これで良いのでは?