帕斯卡函数的一部分

发布于 2024-10-13 03:55:12 字数 497 浏览 3 评论 0原文

我正在尝试将pascal程序重写为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。

谢谢。

I'm trying to rewrite a pascal program to PHP, and don't understand what this part of pascal function do:

 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];

Please help to rewrite it to PHP.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

月下伊人醉 2024-10-20 03:55:12

该代码的非常字面翻译应该是这样的:

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):)

A very literal translation of that code, should be this one:

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];

Of course, u and v are arrays. Sorry for not giving any more info, but it's been like 10 years since Pascal and I last saw each other, but we had a profound romance for a long time, since I feel inlove for to hotties(C# and PHP) :)

梦魇绽荼蘼 2024-10-20 03:55:12
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];
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];
奢望 2024-10-20 03:55:12

对 David 代码的 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++)

i 永远不会达到 3 的值

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

可能 Writeln 可以翻译为

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

当您进行数组翻译时,请考虑到 php 中的数组使用 0 作为第一个索引。

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

2 small corrections to David's code:

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

should be

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

and

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

i never reaches the value of 3

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

May be the Writeln can be translated to

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

When you do the translation of arrays, take into account that arrays in php uses 0 as the first index.

$u= array( 3, 5, 22 )
echo u[1]; // prints 5
走走停停 2024-10-20 03:55:12
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];
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];
浅浅 2024-10-20 03:55:12

我不知道 pascal 但我已经尝试过:)

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 中仅使用大括号没有 Begin End :)

I dont know pascal But i have tried :)

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];
  • In php variable Name Start With $
  • No Begin End used here in php only braces :)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文