Đề bài
Viết chương trình giải phương trình bậc 2 trong PHP. Phương trình bậc 2 có dạng:
Lời giải
Bài này được viết trên eclipse, bạn có thể tham khảo bài debug PHP project trong Eclipse.
Các kiến thức được sử dụng trong ví dụ này:
- Biến toàn cầu $GLOBALS trong PHP, tham khảo bài Biến siêu toàn cầu trong PHP.
- Sử dụng method POST, tham khảo bài Xử lý Form trong PHP.
- Hàm tính căn bậc 2 của một số sqrt($n).
File: phuongtrinhbac2.php
<?php
// khai báo các biến toàn cầu
$heso_a = "";
$heso_b = "";
$heso_c = "";
// đọc các hệ số từ FORM
if (isset ( $_POST ['heso_a'] )) {
$heso_a = $_POST ['heso_a'];
}
if (isset ( $_POST ['heso_b'] )) {
$heso_b = $_POST ['heso_b'];
}
if (isset ( $_POST ['heso_c'] )) {
$heso_c = $_POST ['heso_c'];
}
/**
* giải phương trình bậc 2 trong PHP
*
* @author: viettuts.vn
* @param
* he so bac 2 $a
* @param
* he so bac 1 $b
* @param
* he so tu do $c
*/
function giaiPTB2($a, $b, $c) {
// kiểm tra biến đầu vào
if ($a == "")
$a = 0;
if ($b == "")
$b = 0;
if ($c == "")
$c = 0;
// in phương trình ra màn hình
echo "Phương trình: " . $a . "x2 + " . $b . "x + " . $c . " = 0";
echo "<br>";
// kiểm tra các hệ số
if ($a == 0) {
if ($b == 0) {
echo ("Phương trình vô nghiệm!");
} else {
echo ("Phương trình có một nghiệm: " . "x = " . (- $c / $b));
}
return;
}
// tính delta
$delta = $b * $b - 4 * $a * $c;
$x1 = "";
$x2 = "";
// tính nghiệm
if ($delta > 0) {
$x1 = (- $b + sqrt ( $delta )) / (2 * $a);
$x2 = (- $b - sqrt ( $delta )) / (2 * $a);
echo ("Phương trình có 2 nghiệm là: " . "x1 = " . $x1 . " và x2 = " . $x2);
} else if ($delta == 0) {
$x1 = (- $b / (2 * $a));
echo ("Phương trình có nghiệm kép: x1 = x2 = " . $x1);
} else {
echo ("Phương trình vô nghiệm!");
}
}
?>
<form action="#" method="post">
<table>
<tr>
<td>Hệ số bậc 2, a</td>
<td><input type="text" name="heso_a" value="<?=$heso_a?>" /></td>
</tr>
<tr>
<td>Hệ số bậc 1, b</td>
<td><input type="text" name="heso_b" value="<?=$heso_b?>" /></td>
</tr>
<tr>
<td>Hệ số tự do, c</td>
<td><input type="text" name="heso_c" value="<?=$heso_c?>" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Kết quả"></td>
</tr>
</table>
</form>
<br>
<?php
// gọi hàm giải phương trình bậc 2
// Sử dụng từ kháo $GLOBALS để đọc các biến toàn cầu và truyền vào hàm
if (is_numeric ( $GLOBALS ['heso_a'] ) && is_numeric ( $GLOBALS ['heso_b'] )
&& is_numeric ( $GLOBALS ['heso_c'] )) {
giaiPTB2 ( $GLOBALS ['heso_a'], $GLOBALS ['heso_b'], $GLOBALS ['heso_c'] );
} else {
echo ("Giá trị input không hợp lệ!");
}
?>
Kết quả:
Chú ý: Trong ví dụ trên hàm is_numeric() được sử dụng về xác thực giá trị đầu vào phải là một số thực.