14年10个月前IP:未同步
375882
18楼
公式修正了,另外像dd说的,碳原子数和氢原子数也被我弄反了。。
贴上代码:
    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);
贴上程序:
attachment icon CaHbOcNd.rar 147.92KB RAR 37次下载
建议LZ以后能给个测试用例,写完了我都不知道怎么验证对不对[s:233]
+2000
科创币
虎哥
2012/03/13
感谢参与。
评论
文号 / 375882

百炼成钢
名片发私信
学术分 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' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的