0

PHP で 2 次方程式の計算機を作成したので、数学に関する問題のほとんどを抱えていると思いました。私は非常に奇妙な出力を得ているので、そうではありません。このプログラムは、フォームから$_GETx 2、x、およびその他の数値の値を取得し、x の値を計算して表示することになっています。最初にページをロードすると、プログラムは-10(フォームに何も入力していなくても) 出力し、値を入力しても何もしません。たとえば1, 11 and 18、 を出力するはずのテキスト フィールドに入力するx = -9 and -2と、プログラムは を出力します-22。私は何を間違っていますか?

これが私のコードです(<body>私のHTMLドキュメントのセクション):

<body>
<h1>Quadratic equation calculator</h1>
<p>Type the values of your equation into the calculator to get the answer.</p>
<?php
    $xsqrd;
    $x;
    $num;
    $ans1 = null;
    $ans2 = null;
    $errdivzero = "The calculation could not be completed as it attempts to divide by zero.";
    $errsqrtmin1 = "The calculation could not be completed as it attempts to find the square root of a negative number.";
    $errnoent = "Please enter some values into the form.";
?>
<form name = "values" action = "calc.php" method = "get">
<input type = "text" name = "x2"><p>x<sup>2</sup></p>
&nbsp;
<input type = "text" name = "x"><p>x</p>
&nbsp;
<input type = "text" name = "num">
&nbsp;
<input type = "submit">
</form>
<?php
    if ((!empty($_GET['x2'])) && (!empty($_GET['x'])) && (!empty($_GET['num']))) {
        $xsqrd = $_GET['x2'];
        $x = $_GET['x'];
        $num = $_GET['num'];

            $ans1 = (-$x) + (sqrt(pow($x, 2) - (4 * $xsqrd * $num))) / (2 * $xsqrd);
            $ans2 = (-$x) - (sqrt(pow($x, 2) - (4 * $xsqrd * $num))) / (2 * $xsqrd);

    }
?>
<p>
<?php 
    if(($ans1==null) or ($ans2==null))
    {
    print $errnoent;
    }
    else
    {
    print "x = " + $ans1 + "," + $ans2;
    }
?>
    </p>
</body>
4

1 に答える 1

1

2 つのエラーがあります。

最初のものは数学的なもので、そうあるべきです

$ans1 = ((-$x) + (sqrt(pow($x, 2) - (4 * $xsqrd * $num)))) / (2 * $xsqrd);
$ans2 = ((-$x) - (sqrt(pow($x, 2) - (4 * $xsqrd * $num)))) / (2 * $xsqrd);

正しい式は(-b+-sqrt(b^2-4ac))/(2a)代わりに-b+sqrt(b^2-4ac)/(2a)- 後者の場合、括弧なしの加算よりも除算が優先されます。

2 つ目は、結果を出力する方法です。連結演算子を使用する必要があります。.

print "x = " . $ans1 . "," . $ans2;

(ただし、echo代わりに使用しますprint

于 2013-03-09T10:59:52.013 に答える