一道C++作业

[复制链接]
查看11 | 回复3 | 2010-4-29 13:04:42 | 显示全部楼层 |阅读模式
double 型 最多小数点后6位...所以存在精度问题...就没有想办法了...#includeusing namespace std;static const double MIN = 0.0000001;int main(){ double f(int i); double e=0.0; int i =0; cin>>i; for (; i > 0; i--) {double temp = 0;temp = f(i);e = e + temp;} cout 0; i--)y=i*y; return 1/y;}
回复

使用道具 举报

千问 | 2010-4-29 13:04:42 | 显示全部楼层
#includeusing namespace std;double f(int i);//习惯上,把函数声明放在主函数外面void main(){double e=0; for(int i=1;;i++) {e=e+f(i);if(f(i)0;i--)t=t*i;
//y=1/(t*i);算法理解错误,正解是1/(1*2*3*...*n).你这样y最终永远是1 y=1/(double)t;//主要错误:t是整数,整数除法运算只能得到整数,所以不能进行下去,让它强制转型 return y;}
回复

使用道具 举报

千问 | 2010-4-29 13:04:42 | 显示全部楼层
for(i=0;;i++) {e=e+f(i) while(f(i)if
回复

使用道具 举报

千问 | 2010-4-29 13:04:42 | 显示全部楼层
#include#includedouble f(int );void main(){ int i=3; double e=0; for(i=0;f(i)>1e-6;i++) {cout0;i--)y=1/(t*i); return y;}这样就ok了,只是参数设置,lz有误。例如一开始申请的i~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行