读书人

一个复杂的计算公式不知道程序错在哪

发布时间: 2012-02-23 22:01:36 作者: rapoo

一个复杂的计算公式,不知道程序错在哪,小女子求救!急!
题目要求:计算如下公式,并输出结果。
当r*r <=s*s;计算 sqrt(sin2(r)+sin2(s) )
当r*r> s*s,计算 1/2sin(rs);
其中r,s的值由键盘输入。Sinx的近似值按如下计算公式
sinx=x-x3/3!+x5/5!-x7/7!+……….
当某项的绝对值小于计算精度0.000001时,停止累加,累加和即为该精度下的SINX的近似值。
下面是我自己写的程序,不知道错在哪?输出结果不对,请教高手!
#include <iostream.h>
#include <math.h>
int jie(int i)
{
int sum=1;
for(;i> 0;i--)
sum=sum*i;

return sum;
}


double tsin(double n)
{ double sum=0;
double x=n;
double sqr=n*n;
int i=1;
double f=0;

while(x/jie(i)> 0.000001)
{ f=x/jie(i);
sum=(i%4==1)? sum+f:sum-f;
x=x*sqr;
i=i+2;
}
return sum;
}

void main()
{double r,s,k;
cin> > r> > s;
if(r*r <=s*s)
{
k=sqrt(tsin(r)*tsin(r)+tsin(s)*tsin(s));
cout < < "k的值是: " < <k < <endl;
}else{
k=tsin(r*s)/2;
cout < < "k的值是: " < <k < <endl;
}

}



[解决办法]
你验证结果是多少,我的是一万多,应该是一点多
-------------------------
lz你的验证数据是什么,贴出来
我使用1,2;2,2;2,1;
[解决办法]
楼主误会了一个事实,第二个程序中的fabs是math.h中的求绝对值的库函数,你自定义这个int fabs(int n)根本就没有调用.

读书人网 >C++

热点推荐