2015-04-16 2 views
1

j'ai essayé de faire une résolution d'équations du second degré en php:résolution d'équations quadratiques en 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)); 
    } 
?> 

la Le problème est qu'il retourne de mauvaises réponses (d est vrai, x1 et x2 ne le sont pas) semble que sqrt() retourne zéro ou peut-être quelque chose d'autre.

+0

Quels résultats avez-vous obtenu pour quels paramètres d'entrée? Et qu'attendiez-vous? –

Répondre

3

Il y a une faute de frappe dans cette ligne:

elseif($d = 0)

qui est attribuer la valeur 0 à $d au lieu de le comparer. Cela signifie que vous évaluez toujours sqrt(0), ce qui correspond à 0, dans votre bloc else.

Il devrait être:

elseif($d == 0)

+0

Dans les langues où de telles affectations ne donnent pas au moins un avertissement, une habitude utile est de mettre la constante à gauche: 'if (0 = $ d)' échouera. – Richard