2013-12-08 46 views
1

假設以下變量的值之前在代碼中設置:如何將這個舊的BASIC作爲PHP函數寫入?

LSLATHOR = 1780NRSLATVER = 34

然後,我有GWBASIC的這兩行:

100 PITCHHOR=(LSLATHOR/(NRSLATVER+1)) : LSLATHOR=PITCHHOR*(NRSLATVER+1) 
110 IF PITCHHOR>72 THEN NRSLATVER=NRSLATVER+1:GOTO 100 
120 LPRINT "HORIZONTAL PITCH is equal to : ";PITCHHOR; 

現在,如果我想把這個邏輯一個PHP函數我怎麼去解決它?:

function calc_h($slat_length_h, $slat_qty_v) { 

    $pitch_h = ($slat_length_h/($v_slat_qty + 1)); 

    if ($pitch_h > 72) {    

      while ($pitch_h > 72) {      
       $v_slat_qty += 1; 
       $slat_length_h = $pitch_h * ($v_slat_qty + 1); 
       $pitch_h = ($slat_length_h/($v_slat_qty + 1));     
      } 

    }  

    return $pitch_h; 
} 

$slat_length_h = 1780; 
$slat_qty_v = 34; 

echo calc_h($slat_length_h, $slat_qty_v); 

你需要知道的是一個條件有時會存在於PITCHHOR > 72那麼它需要根據GWBasic腳本調整/重新計算$ pitch_h。

我希望我提供了足夠的信息。 Ty vm。

+1

圍繞while循環的'if'是多餘的,它們檢查相同的條件。但是,你真正的問題是什麼?你有兩個函數,測試它們是否對多個輸入產生相同的結果。 – knittl

+0

我不認爲我的PHP功能是正確的。爲了得到正確的結果,我需要調整什麼? – TheRealWitblitz

回答

1

我會寫如下。但是由於您有原始代碼,因此您可以簡單地嘗試插入一些樣本值並比較結果。

function calc_pitchhor($lslathor, $nrslatver) { 
    do { 
     $pitchhor = ($lslathor/($nrslatver+1)); 
     $lslathor = $pitchhor*($nrslatver+1); 
     ++$nrslatver; 
    } while($pitchhor > 72) 

    return $pitchhor; 
} 


$lslathor = 1780; 
$nrslatver = 34; 

echo "HORIZONTAL PITCH is equal to: ", calc_pitchhor($slat_length_h, $slat_qty_v); 
相關問題