2015-04-16 4 views
1

Я попытался сделать квадратное уравнение решатель в PHP:Квадратное уравнение решатель в PHP

index.html:

<html> 
    <body> 
     <form action="findx.php" method="post"> 
      Find solution for ax^2 + bx + c<br> 
      a: <input type="text" name="a"><br> 
      b: <input type="text" name="b"><br> 
      c: <input type="text" name="c"><br> 
      <input type="submit" value="Find x!"> 
     </form> 
    </body> 
</html> 

findx.php:

<?php 
    if(isset($_POST['a'])){ $a = $_POST['a']; } 
    if(isset($_POST['b'])){ $b = $_POST['b']; } 
    if(isset($_POST['c'])){ $c = $_POST['c']; } 

    $d = $b*$b - 4*$a*$c; 
    echo $d; 

    if($d < 0) { 
     echo "The equation has no real solutions!"; 
    } elseif($d = 0) { 
     echo "x = "; 
     echo (-$b/2*$a); 
    } else { 
     echo "x1 = "; 
     echo ((-$b + sqrt($d))/(2*$a)); 
     echo "<br>"; 
     echo "x2 = "; 
     echo ((-$b - sqrt($d))/(2*$a)); 
    } 
?> 

проблема в том, что он возвращает неправильные ответы (d - это правильно, x1 и x2 - нет) кажется, что sqrt() возвращает ноль или может быть что-то еще.

+0

Какие результаты вы получите за какие входные параметры? И что вы ожидали? –

ответ

3

Там опечатка в этой строке:

elseif($d = 0)

который назначая значение 0 к $d вместо сравнения его. Это означает, что вы всегда оцениваете sqrt(0), что составляет 0, в вашем блоке else.

Оно должно быть:

elseif($d == 0)

+0

В тех языках, где такие присваивания не дают хотя бы предупреждения, полезной привычкой является поместить константу слева: 'if (0 = $ d)' будет терпеть неудачу. – Richard