24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1867  |  回复: 4

yuan020545

金虫 (初入文坛)

[求助] 关于c++中计算结果出现-1.#IND的问题

流体力学中用c++编程计算串联管路的流量q,完整的程序如下,但是计算结果出现-1.#IND,不知道什么情况,请大神们帮看看吧,应该怎么写才对?
#include
#include
#define pi 3.1415926
#define g 9.8

float CL(float dlt,float d,float re,int *id)
{
        float lmd1,temp,lmd,Rec1,Rec2,Rec3;

        Rec1=2320;
        Rec2=80*d/dlt;
        Rec3=4160*pow(d/2.0/dlt,0.85);
        if(re         else if(re         {
                if(re<1e5){lmd=0.3164/pow(re,0.25);*id=2;}
                else if(re<3e6){lmd=0.0032+0.221*pow(re,-0.237);*id=3;}       
        }
        else if(re         {
                lmd=0.01;*id=4;
                while(fabs(lmd-lmd1)>=1e-6)
                {
                        lmd1=lmd;
                        temp=log(dlt/(3.7*d)+2.51/re/sqrt(lmd1))/log(10.0);
                        lmd=pow(1.0/(-2.0)/temp,2);
               
                }

        }
        else if(re>=Rec3)
        {
                lmd=pow((1.74+2.0*log(d/(2.0*dlt))/log(10.0)),-2);
                *id=2;
        }
        return(lmd);       
}


float CL(float,float,float,int *);
void main()
{
        int ID1=0;
        int ID2=0;
        float DLT1,LMD1,LMD11,Re1,D1,L1,V1;
        float DLT2,LMD2,LMD22,Re2,D2,L2,V2;
        float Q,NU,H,KCE;
        float DK,lll;

        printf("please input:h,l1,d1,l2,d2,nu,dlt1,dlt2,kce:\n";
        scanf("%f%f%f%f%f%f%f%f%f",&H,&L1,&D1,&L2,&D2,&NU,&DLT1,&DLT2,&KCE);

        LMD11=0.025;LMD22=0.015;

loop:
        DK=D1*D1/(D2*D2);
        lll=KCE+LMD11*L1/D1+(1-DK)*(1-DK);
        lll=lll+LMD22*L2/D2*DK*DK+DK*DK;
        V1=sqrt(2*g*H/lll);
        V2=DK*V1;
        Re1=V1*D1/NU;
        Re2=V2*D2/NU;
        LMD1=CL(DLT1,D1,Re1,&ID1);
        LMD2=CL(DLT2,D2,Re2,&ID2);
        if((fabs(LMD1-LMD11)>=5e-6)||(fabs(LMD2-LMD22)>=5e-6))
        {
                LMD11=LMD1;
                LMD22=LMD2;
                goto loop;       
        }
        Q=pi*D1*D1*V1/4;
        printf("ID=%d\nv1=%7.4fm/s\nre1=%7.2f\nlmd1=%7.4f\nID2=%d\nv2=%7.4fm/s\nre2=%7.2f\nlmd2=%7.4f\nq=%7.4fm3/s\n",ID1,V1,Re1,LMD1,ID2,V2,Re2,LMD2,Q);
}
运行程序:
input:H,D1,D2,DLT1,DLT2,L1,L2,NU
6.,0.6,0.9,0.0015,0.0003,300.,240.,1.E-6
正确的输出如下:
ID1=5
V1=2.8713m/s
RE1=1722771.00
LMD1=0.0249
ID2=4
V2=1.2761m/s
RE2=1148514.00
LMD2=0.0159
Q=0.8118m3/s

[ Last edited by yuan020545 on 2011-5-15 at 22:35 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   关注TA 给TA发消息 送TA红花 TA的回帖

superglass

木虫 (小有名气)

【答案】应助回帖

★ ★
余泽成(金币+2): 谢谢参与应助,欢迎新虫,常来程序语言版! 2011-05-19 19:26:11
yuan020545(金币+1): 谢谢参与,但我想知道具体方案 2011-05-19 21:45:48
这个是溢出的问题,所计算到的数值超过了你用的数据类型的最大值或最小值的范围
followmyheart
2楼2011-05-19 09:48:37
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

dubo

金虫 (著名写手)

优秀版主

【答案】应助回帖

yuan020545(金币+1): 呵呵,谢谢 2011-05-25 09:09:36
一步步DEBUG吧,当你不知怎么办时,这招最灵了
3楼2011-05-22 17:15:52
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

kfb006

新虫 (初入文坛)

【答案】应助回帖

★ ★
jjdg(金币+1): 感谢参与 2011-06-05 01:34:52
dubo(金币+1): 欢迎常来程序语言版讨论 2011-06-06 16:07:07
yuan020545(金币+28): 1 2011-06-07 09:45:42
一般情况下是出现除数为零的情况。
4楼2011-06-04 16:37:38
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

dubo

金虫 (著名写手)

优秀版主

【答案】应助回帖

出现除数为0了,或者没赋值(越界)
5楼2011-06-06 16:06:42
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yuan020545 的主题更新
信息提示
请填处理意见