2013-03-09 3 views
0

PHP로 2 차 방정식 계산기를 작성했기 때문에 수학 문제가 대부분 있다고 생각했습니다. 그렇다고해도, 나는 이상한 결과를 얻고 있습니다. 프로그램은 $_GET x , x 및 양식의 다른 숫자 값을 가정하고 x 값을 계산 한 다음 표시합니다. 페이지를 처음로드 할 때 프로그램에서 -10을 출력하고 (양식에 아무 것도 입력하지 않은 경우에도) 입력 한 다음 아무 것도 입력하지 않습니다. 예를 들어, x = -9 and -2을 출력해야하는 텍스트 필드에 1, 11 and 18을 입력하면 프로그램에서 -22을 출력합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 당신은 두 개의 오류가PHP 2 차 방정식 계산기 이상한 결과

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

답변

1

:

여기 내 코드 (내 HTML 문서의 <body> 절)입니다.

우선 한 수학, 그것은

$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)이다되어야 - 후자의 경우, 분할에 괄호없이 또한 우선 순위를 가질 것이다.

그리고 두 번째는 (내가 echo 대신 print을 사용하지만), 당신은

+0

은 수학 비트 무슨 문제였다 연결 연산자 .

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

를 사용해야합니다 당신의 결과를 방법은 당신이 출력? 또한 작동하므로 고맙습니다. – imulsion

+0

하지만'print'보다는'echo'를 사용해야하는 이유는 무엇입니까? – imulsion

+0

내 의견을 편집하고 수학 비트를 추가했습니다. 'echo' 대'print'에 대해서, 나는 간단한 출력을 위해서'echo'를 선호합니다 (그리고 대부분의 사람들이합니다) –