まだプログラミング初心者です。
学校のc言語の課題でどうしてもわからないことがあったので質問させていだだきました。
「ex = 1 + x1/1! + x2/2! + x3/3! + x4/4! + … を利用して ex を計算する関数 double myexp( double x ) を作成せよ. k=0, 1, 2, 3, … について xk/k! を加算してゆき, xk/k!<1.0e-06 となった時点で計算を打ち切るようにせよ.main から myexp を呼び出し, x=1.0, 2.0, …, 10.0 に対して myexp(x) の値を全体で 13 桁, 小数点以下 5 桁で表示せよ. 次のような結果が得られることを確認せよ.」という問題で
#include <stdio.h>
double myexp( double x ) ; //プロトタイプ
int main( void )
{
int s;
double result,m;
for(s=1;s<=10;s++)
{
m=(double)s;
result = myexp(m);
printf("\t%f\t%13.5f\n",m,result);
}
return 0;
}
double myexp( double x )
{
int k;
double y,z,t,T,eqs;
z=1;
t=1;
eqs=1.0e-06;
for(k=0;T>eqs;k++)
{
if(k>=1)
{
t=t*x;
z=z*k;
y=y+t/z;
}
else
{
y=1;
}
T=t/z;
}
return y;
}
$ ./a
1.000000 2.71828
2.000000 0.00000
3.000000 0.00000
4.000000 0.00000
5.000000 0.00000
6.000000 0.00000
7.000000 0.00000
8.000000 0.00000
9.000000 0.00000
10.000000 0.00000
となりうまくいきません。
どうもmain関数のなかの2回目forループによってmyexpに入力されるはずのmがちゃんと入力されていない
様なのです。どうすればいいか教えてください。
よろしくお願いします。