14年10个月前IP:未同步
375581
2楼
新人初来乍到,不懂之处还请指教。

程序使用了MFC,怕有的计算机没装MFC库,使用了静态库,程序就稍微胖了点。。。

贴上计算的代码,不知道是否有误?
        /*m_a,m_b,m_c,m_d分别对应a,b,c,d。speed:爆速;press:爆压*/
       double N,M,Q,mol,speed,press;
    UpdateData(TRUE);

    mol=m_a*12+m_b+m_c*16+m_d*14.01;

    if( m_c>=((2*m_a)+(m_b/2)))
    {
        N=(m_b+m_c*2+m_d*2)/(4*mol);
        M=(4*mol)/(m_b+m_c*2+m_d*2);
        Q=(1000*(28.9*m_b+94.05*m_a+0.239*m_Hf))/mol;

    }
    else if((m_c>=(m_b/2))&&(m_c<(2*m_a+m_b/2)))
    {
        N=(m_b+m_c*2+m_d*2)/(4*mol);
        M=(56*m_d+88*m_c-m_b*8)/(m_b+m_c*2+m_d*2);
        Q=(1000*(28.9*m_b+94.05*(m_c*0.5-0.25*m_b)+0.239*m_Hf))/mol;
    }
    else if(m_c<(m_b/2))
    {
        N=(m_b+m_d)/(2*mol);
        M=(2*m_b+28*m_d+32*m_c)/(m_b+m_d);
        Q=(1000*(57.8*m_c+0.239*m_Hf))/mol;
    }
    else
    {
        MessageBox(L"参数出错?");
        return;
    }

    speed= 1.01* pow((N*pow(M,0.5)*pow(Q,0.5)),0.5)*(1+1.3*m_p) ; //D=1.01(NM0.5Q0.5)0.5(1+1.30ρ)
    press=1.558*pow(m_p,2)*N*pow(M,0.5)*pow(Q,0.5);    // P=1.558p2NM0.5Q0.5

    m_ShowP.Format(L"%fGpa",press);
    m_ShowSpeed.Format(L"%fkm/s",speed);

    UpdateData(FALSE);

由于不懂这方面的东西,没法给出测试用例,所以正不正确我也不知道。。。[s:220]  



/************************************************************************************************************/

以前的无视吧,程序改了,这是改了后的:
attachment icon CaHbOcNd.rar 147.92KB RAR 35次下载

翻帖子就像翻系统日志,习惯了只看最后面新增的的,没主意到要在原帖上修改。。
+2
科创币
davidlab
2012/03/11
非常实用&nbsp;&nbsp; 支持这个作品
+20
科创币
专打贾君鹏
2012/03/11
评论
文号 / 375581

百炼成钢
名片发私信
学术分 1
总主题 20 帖总回复 184 楼拥有证书:学者 机友 笔友
注册于 2012/03/10 14:27:21最后登录 2025/08/18 12:03:27
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:0

个人简介

暂未填写
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的