2011-01-21 77 views
0

我試圖重寫帕斯卡程序PHP,不明白什麼帕斯卡這部分功能做的:部分pascal函數

while (u[3] <> 1) and (u[3]<>0) and (v[3]<>0)do 
     begin 
     q:=u[3] div v[3]; 
     for i:=1 to 3 do 
      begin 
      t:=u[i]-v[i]*q; 
      u[i]:=v[i]; 
      v[i]:=t; 
      {writeln('u',i,'=',u[i],' v',i,'=',v[i]); } 
      end; 
     end; 
     if u[1]<0 then u[1]:=n+u[1]; 
     rae:=u[1]; 

請幫忙將其重寫PHP 。

感謝。

回答

3
while ($u[3] != 1) && ($u[3] != 0) && ($v[3] != 0) { 
    $q = floor($u[3]/$v[3]); 
    for ($i = 1; $i <= 3; $i++) { 
    $t = $u[$i] - $v[$i] * $q; 
    $u[$i] = $v[$i]; 
    $v[$i] = $t; 
    echo "u$i={$u[$i]} v$i={$v[$i]}\n"; 
    } 
} 

if ($u[1] < 0) { 
    $u[1] = $n + $u[1]; 
} 

$rae = $u[1]; 
+0

$ rae不在if語句中。 – Simon 2011-01-21 07:47:56

4

該代碼的非常直譯,應該是這個:

while ($u[3] != 1 && $u[3] != 0 && $v[3] != 1) 
{ 
    $q = floor($u[3]/$v[3]); 

    for ($i = 1; $i <= 3; $i++) 
    { 
     $t = $u[$i] - $v[$i] * $q; 
     $u[$i] = $v[$i]; 
     $v[$i] = $t; 
     //writeln('u',i,'=',u[i],' v',i,'=',v[i]); 
    } 
} 

if ($u[1] < 0) 
    $u1] = $n + $u[1]; 

$rae = $u[1]; 

當然,u和v是數組。對不起,沒有提供任何更多的信息,但自從Pascal和我上次見面之後已經有10年了,但是我們有很長的一段深刻的戀情,因爲我對戀人(C#和PHP)很感興趣:)

+0

模數和div不一樣。此外,爲少轉一圈。 – kapa 2011-01-21 07:44:39

+0

對不起'for循環。我仍然認爲%是我們需要的,如果我記得,div用來獲得分區的剩餘部分,這是%做的。 – 2011-01-22 00:48:06

+0

div用於獲取整數部分,mod用於獲取餘數 – kapa 2011-01-22 09:49:43

2
while($u[3] != 1 && $u[3] != 0 && $v[3] != 0) 
{ 
$q = ($u[3] - ($u[3] % $v[3]))/$v[3]; //just the same as floor($u[3]/$v[3]), but i want to use % here :) 
for ($i = 1; $i <= 3; $i++) 
{ 
    $t = $u[$i] - $v[$i]*$q; 
    $u[$i] = $v[$i]; 
    $v[$i] = $t; 
    echo '<br />u'.$i.'='.$u[$i].' v'.$i.'='.$v[$i]; 
} 
} 
if ($u[1] < 0) $u[1] = $n + $u[1]; 
$rae = $u[1]; 
2

我不知道帕斯卡但我已經嘗試過:)

while ($u[3]!=1 && $u[3]!=0 && $v[3]!=0) [ 
    $q=floor($u[3]/ $v[3]); 
    for ($i=1;$i<3;$i++) { 
     $t=$u[$i]-$v[$i]*$q; 
     $u[$i]=$v[$i]; 
     $v[$i]=$t; 
     echo "u".$i."=".$u[$i]."v".$i."=".$v[$i];  
    } 
    if ($u[1]<0) { 
     $u[1]=$n+$u[1]; 
    } 
    $rae=$u[1]; 
  • 在PHP變量名稱開始以$
  • 沒有開始結束這裏使用的PHP只是括號:)
3

2小的修正大衛代碼:

while ($u[3] != 1 && $u[3] != 0 && $v[3] != 1) 

應該

while ($u[3] != 1 && $u[3] != 0 && $v[3] != 0) 

for ($i = 1; $i < 3; $i++) 

我從來沒有達到val 3

for ($i = 1; $i <= 3; $i++) 

UE可以是Writeln可以翻譯成

echo 'u'.$i.'='.$u[$i].' v'.$i.'='.$v[$i]; 

當你做陣列的翻譯,考慮到在PHP陣列使用0作爲第一指標的帳戶。

$u= array(3, 5, 22) 
echo u[1]; // prints 5