| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 801 人关注过本帖
标题:高手进来帮忙看看这段代码
只看楼主 加入收藏
blackender
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-9-24
收藏
 问题点数:0 回复次数:5 
高手进来帮忙看看这段代码
有高手再不?
帮我看看,我这个程序有什么地方错了,调试的时候没有抱错,但就是还没运行完就停了
int main()
{
    int cumu(int k);
   double power(double x,int k);
   double x;
   cout<<"input x"<<endl;
   cin>>x;
    double g=0.0,t=x,p=0.000001;
    int n=1;
    do
    {
        g=g+t;
        n++;
        t=power(-1,n-1)*power(x,2*n-1)/cumu(2*n-1);
    }while(fabs(t)>=p);
    cout<<g<<endl;
}
//------------------------------------------------------------------------------------------------------------------
int cumu(int k)
{
    int g=1,i=1;
    while(i<=k)
    {
        g=g*i;    
        i++;
    }
    return g;
}
//------------------------------------------------------------------------------------------------------------------
double power(double x,int k)
{
    double h=1.0;
    int i=1;
    while(i<=k)
    {
        h=h*x;
        i++;
    }
    return h;
}
搜索更多相关主题的帖子: 代码 
2008-09-24 10:37
taiyang0331
Rank: 2
等 级:论坛游民
帖 子:35
专家分:20
注 册:2008-9-24
收藏
得分:0 
do
    {
        g=g+t;
        n++;
        t=power(-1,n-1)*power(x,2*n-1)/cumu(2*n-1);
    }while(fabs(t)>=p);
中的   
fabs(t)
是什么?
2008-09-24 17:06
沼泽
Rank: 4
等 级:业余侠客
威 望:8
帖 子:291
专家分:228
注 册:2008-9-15
收藏
得分:0 
回复 1# blackender 的帖子
怎么可能编译没错呢??首先你的fabs(t)没定义,然后主函数没有返回值
2008-09-24 20:52
chenlou
Rank: 1
来 自:湖北黄冈武穴
等 级:新手上路
威 望:2
帖 子:49
专家分:0
注 册:2008-9-21
收藏
得分:0 
你的代码没有错误
兄弟,你的代码的确是正确的,没又任何错误。
在此我说下你的程序所描述的问题:这是一个求解
(-1)*x3/3!+(-1)2*x5/5!+....+ (-1)(n-1) *x(2n-1)/(2n-1)!     
其中(-1)n指-1的n-1次幂,x(2n-1)是指x的2n-1次幂
当你输入1时,输出0.833333;
当你输入2时,输出0.907937;
当你输入3时,输出0.145312;
但是当继续往下输入的时候,不会有任何显示,光标停在下一行不动。这是为什么呢?
我想原因可能是这样的:
首先你这个程序循环的次数随着n的真大迅速真大(特别是4以上),这样一来乘除等运算量迅速真大(计算机执行乘除法是相当费时的),变量数值也迅速真的大。这样一来计算机要进行大量的运算,导致系统一直处于“忙”态,不会显示处任何结果。换句话说,你这个程序的时间复杂度和空间复杂度太大,执行效率很低。
2008-09-24 23:33
ronaldowsy
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2008-10-20
收藏
得分:0 
你是不是想求sin,再利用sin求一个函数!
2008-10-25 21:00
ronaldowsy
Rank: 1
等 级:新手上路
帖 子:68
专家分:0
注 册:2008-10-20
收藏
得分:0 
我看懂你这个程序想得到什么了,这个程序你拿去试一下吧,我也是跟着你那程序去该的
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    double k,r,s;
    double tsin (double x);
    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=tsin(r * s)/2;
    }
    cout<<k<<endl;
}
double tsin (double x)
{
    double p=0.000001,g=0,t=x;
    int n=1;
    while (fabs(t) >=p)
    {
        g=g+t;
        n++;
        t=- t * t * x / (2 * n -1) / (2 * n -2);
    }
    return g;
}
2008-10-25 21:02
快速回复:高手进来帮忙看看这段代码
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016871 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved