注册 登录
编程论坛 C++教室

定义一个 k 函数,这样写正确吗?

dutwlsy 发布于 2014-04-25 11:11, 572 次点击
我这里有一个程序的一部分,大家能帮我看一下这段程序正确吗?定义一个k函数,这样写正确吗?
double CF2DH_FieldCalc_316L::uf_k(long a_m, long a_l,long double  r,long double x)
{

    double k,T;
    T = m_T[1][a_m][a_l];
    x = m_det_x*a_l;      //m_det_x是一个定值,前面已经定义了,a_l是一个变量,,是从1-10000
        r = m_det_r*a_m;          //m_det_x是一个定值,前面已经定义了,a_m是一个变量,,是从1-10000
    if (x < sSpecimen.dMB_x)  
    {
        if (r < sSpecimen.dMB_r)
        {
            if ( T <=  660)
        {
            k =240.50-0.0065437*T-0.000059278*T*T;
        }
           else
        {
            k =61.1476;
        }
        }
        else
        {
           if ( T <=  660)
        {
            k =240.50-0.0065437*T-0.000059278*T*T;
        }
           else
        {
            k =61.1476;
        }
        }
    }
  else
    {
        if (r < sSpecimen.dMB_r)
        {
            if ( T <= 1398)
        {
            k =12.309 + 0.0168/T/T/T-0.0000031592*T*T;
        }
            else
        {
            k =29.62097;
        }
        }
        else
        {
            if ( T <= 1398)
        {
            k =12.309 + 0.0168/T/T/T-0.0000031592*T*T;
        }
            else
        {
            k =29.62097;
        }
        }
    }

       return k;

}
7 回复
#2
wp2319572014-04-25 11:14
正确与否还用问吗  自己调试一下不就ok了  

能得到预期结果  则 基本正确  否则绝对不正确
#3
TonyDeng2014-04-25 11:34
若測試過符合要求、達到目的,就是正確的。至於這樣寫好不好,就是另一回事,這份代碼肯定寫的不好。先把代碼寫正確了,是第一步,一定要確保正確性,然後在正確的基礎上修改各項指標,用原先正確的結果去檢驗後來的修改代碼是否正確,這樣逐步遞進,直到各項指標都相對滿意。沒有一步到位的,所謂多寫,無非是這樣,不是不同類型的題目都去做,反覆雕琢比不斷創造有益得多。

[ 本帖最后由 TonyDeng 于 2014-4-25 11:37 编辑 ]
#4
dutwlsy2014-04-25 13:31
回复 3 楼 TonyDeng
谢谢指导。
#5
dutwlsy2014-04-25 13:51
回复 3 楼 TonyDeng
我刚开始写程序,有很多地方还不太懂,写的代码开始肯定不是很好,我现在是想先把代码的逻辑顺序弄对了,简单的弄好了,等学好了,再对程序改进、优化。我上面那个程序是一个判断语句,想表达的意思是当x<sSpecimen.dMB_x ,r<sSpecimen.dMB_r时和x<sSpecimen.dMB_x ,r>sSpecimen.dMB_r时执行
if(T<= 660)
        {
          c = 874.4 + 0.52*T ;
        }
        else
    {
         c=1178
       }
当x>sSpecimen.dMB_x ,r<sSpecimen.dMB_r时和x>sSpecimen.dMB_x ,r>sSpecimen.dMB_r时执行

if(T<=1398)
         {
     c= 444.00681 + 0.3329*T -0.000193451 * T*T+ 0.0000000726966 *T*T*T;
         }
         else
         {
             c=729.94538;
         }
麻烦您帮我看一下我上面那个判断对吗?谢谢我刚开始写程序,有很多地方还不太懂,写的代码开始肯定不是很好,我现在是想先把代码的逻辑顺序弄对了,简单的弄好了,等学好了,再对程序改进、优化。我上面那个程序是一个判断语句,想表达的意思是当x<sSpecimen.dMB_x ,r<sSpecimen.dMB_r时和x<sSpecimen.dMB_x ,r>sSpecimen.dMB_r时执行
if(T<= 660)
        {
          c = 874.4 + 0.52*T ;
        }
        else
    {
         c=1178
       }
当x>sSpecimen.dMB_x ,r<sSpecimen.dMB_r时和x>sSpecimen.dMB_x ,r>sSpecimen.dMB_r时执行

if(T<=1398)
         {
     c= 444.00681 + 0.3329*T -0.000193451 * T*T+ 0.0000000726966 *T*T*T;
         }
         else
         {
             c=729.94538;
         }
麻烦您帮我看一下我上面那个判断对吗?谢谢
#6
TonyDeng2014-04-26 11:49
想表达的意思是当x<sSpecimen.dMB_x ,r<sSpecimen.dMB_r时x<sSpecimen.dMB_x ,r>sSpecimen.dMB_r时执行
if(T<= 660)
        {
          c = 874.4 + 0.52*T ;
        }
        else
    {
         c=1178
       }
当x>sSpecimen.dMB_x ,r<sSpecimen.dMB_r时x>sSpecimen.dMB_x ,r>sSpecimen.dMB_r时执行

if(T<=1398)
         {
     c= 444.00681 + 0.3329*T -0.000193451 * T*T+ 0.0000000726966 *T*T*T;
         }
         else
         {
             c=729.94538;
         }


你這裡兩個描紅的“和”是什麽意思?在文字上最好描述清楚了,才能整理自己的思路,如果自然語言描述不清楚,就用數學公式。
#7
dutwlsy2014-05-06 18:41
回复 6 楼 TonyDeng
好的,谢谢
#8
TonyDeng2014-05-07 09:59
你這段代碼讀起上來很費勁,不對照數學公式,很難說你寫的對不對。其次,這個代碼的硬編碼(魔數)太多了,應該用代數(有意義的變量名)取代具體數字,才能把意圖表達清楚。
1