问题与gcd和表格编码

时间:2014-06-22 11:48:48

标签: php forms algorithm function math

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <meta charset="UTF-8">
        <title>Euclidean Algorithm</title>
    </head>
    <body>

        <form method="get" action="EuclidAlgo.php">
            <fieldset>

<label for="remainder">Euclidean Algorithm : </label>
<input type="text" name="NumberA" value="<?php echo (isset($_GET['NumberA'])) ? $_GET['NumberA'] : 5; ?>"/>
<input type="text" name="NumberB" value="<?php echo (isset($_GET['NumberB'])) ? $_GET['NumberB'] : 5; ?>"/>
<input type="submit" name='submit' value="submit" />
</fieldset>
</form>

    <?php



    function gcd($a, $b)


    {
        $a = abs($a);
        $b = abs($b);

        if ($a == 0)
        {
            return $b;
        }
        elseif ($b == 0)
        {
            return $a;
        }
        elseif ($a > $b)
        {
            return gcd($b, $a % $b);
        }
        else
        {
            return gcd($a, $b % $a);
        }
    }

    function lcm($a, $b)
    {
        $a = abs($a);
        $b = abs($b);

        if  ($a > $b)
        {
            return ($b / gcd($a, $b)) * $a;
        }
        else
        {
            return ($a / gcd($a, $b)) * $a;
        }
    }

   if (isset($_GET['submit']))
{
    $a = $_GET['NumberA'];
    $b = $_GET['NumberB'];
} else {
     $a = 5;
     $b = 5;    
}
echo gcd($a, $b);
?>
<br />
<?php
echo lcm($a, $b);



    ?>

我的lcm功能运行不正常,例如当我输入100和150进入我的程序而不是返回50时,它返回200任何想法,如果我错过任何重要的我需要陈述只是问而不是抱怨或者给我的工作低分。

1 个答案:

答案 0 :(得分:1)

尝试

if (isset($_GET['submit']))

而不是

if (isset($_GET['gcd']))

为什么呢?因为表单没有名为gcd的字段。


编辑:根据您的修改和一些建议。

将您的HTML(建议)更改为:

<input type="text" name="NumberA" value="<?php echo (isset($_GET['NumberA'])) ? $_GET['NumberA'] : 0; ?>"/>
<input type="text" name="NumberB" value="<?php echo (isset($_GET['NumberB'])) ? $_GET['NumberB'] : 0; ?>"/>
<input type="submit" name='submit' value="submit" />

这将防止弹出任何“未定义变量”错误。

然后以:

结束您的PHP
if (isset($_GET['submit']))
{
    $a = $_GET['NumberA'];
    $b = $_GET['NumberB'];
} else {
     $a = 0;
     $b = 0;    
}
echo gcd($a, $b);