首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

大神帮忙看上这个解方程代码哪错了

2012-12-30 
大神帮忙看下这个解方程代码哪错了?用牛顿迭代法做的float spow(float oper,int p){float product1if(p

大神帮忙看下这个解方程代码哪错了?
用牛顿迭代法做的

float spow(float oper,int p)
{
        float product=1;
        if(p>0)
        {
                while(p)
                {
                        product*=oper;
                        p--;
                }
                return product;
        }
        else if(p=0)
                return 1;
        else
        {
                while(p)
                {
                        product*=oper;
                        p--;
                }
                return 1/product;
        }
}

int main()
{
        float co[10];
        int npow[10];
        int n,i;
        float f0,f1,x0,x1,res;
        cout<<"多项式项数"<<endl;
        cin>>n;
        cout<<"根附近的数:";
        cin>>x0;
        x1=x0;
        for(i=0;i<n;i++)
{
                cout<<"输入第"<<i+1<<"项系数:";
                cin>>co[i];
                cout<<"输入第"<<i+1<<"项系数:";
                cin>>npow[i];
        }
        do
        {
                for(i=0,f0=0;i<n;i++) f0+=co[i]*spow(x0,npow[i]);
                for(i=0,f1=0;i<n;i++) f1+=co[i]*npow[i]*spow(x0,npow[i]-1);
        x1=x0-f0/f1;


        for(i=0,res=0;i<n;i++) res+=co[i]*spow(x1,npow[i]);
                x0=x1;
        }while(res*res>=0.0001);
        cout<<"近似结果:"<<x1<<endl;
        return 0;
}

[解决办法]
多给一些信息出来,比如思路,还是觉得哪个地方有什么不妥。
[解决办法]
将所有float改为double
单步调试或设断点调试。
[解决办法]
gdb设断点调试下

热点排行