一简单题求解。。。

vgfcjv 2010-04-20 10:37:03
新手刚学C++ 做了下面的例题 可运行输入数据就是没反应。。实在不知道哪里错了。。哪位好心人帮忙看下可以吗?

#include<iostream.h>
#include<math.h>
void main(void)
{
double tsin(double x);

double s,r,k;

cout<<"r=";
cin>>r;
cout<<"s=";
cin>>s;
if(r*r<=s*s)

k=sqrt(tsin(r)*tsin(r)+tsin(s)*tsin(s));

else

k=1.0/2*tsin(r*s);

cout<<k;

}

double tsin(double x)
{
double jicifang(double x,int y);

double jiecheng(int x);




int flag=1,i=1;

double m=0,t;

do

{

t=flag*jicifang(x,2*i-1)/jiecheng(2*i-1);

m+=t;

i++;
flag=flag*(-1);

}while(fabs(t)>1e-6);

return m;
}



double jicifang(double x,int y)
{
int j;
double chengji=1.0;

for(j=y;j>0;j--)

{

chengji=chengji*x;

}

return chengji;
}



double jiecheng(int x)
{
int ji=1,d;

for(d=x;d>0;d--)

{


ji=ji*d;


}

return ji;

}
知道有更好的方法做这题,可我就是要用函数实现,谢谢解答。。
...全文
157 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
一土草三工 2010-04-21
  • 打赏
  • 举报
回复
学习了
vgfcjv 2010-04-21
  • 打赏
  • 举报
回复
我把int全改成double果然解决问题了!谢谢呀~~~~~~~~~[Quote=引用 1 楼 arong1234 的回复:]
int 最大表达2147483647,这个数小于13得阶乘,因此你得阶乘函数超过13就溢出了,因此你得阶乘项最大值为11!=39916800 ~4e7
只要你输入得x大于1.3,那么无论你怎么计算,它也不可能使得x^n/n!小于1e-6的

注意阶乘的函数中,d需要是int, ji必须是double,这样才能确保不溢出
[/Quote]
huangbo0603 2010-04-20
  • 打赏
  • 举报
回复
学习学习,加帮顶一个!
chaoliu1024 2010-04-20
  • 打赏
  • 举报
回复
楼上的好强,原来是益处问题
arong1234 2010-04-20
  • 打赏
  • 举报
回复
int 最大表达2147483647,这个数小于13得阶乘,因此你得阶乘函数超过13就溢出了,因此你得阶乘项最大值为11!=39916800 ~4e7
只要你输入得x大于1.3,那么无论你怎么计算,它也不可能使得x^n/n!小于1e-6的

注意阶乘的函数中,d需要是int, ji必须是double,这样才能确保不溢出

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧