15/09/2018, 16:48

Giải phương trình bậc 2 trong PHP

PHP Đề 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 ...

PHP

Đề 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:

giải phương trình bậc 2 trong PHP

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
giaiPTB2 ( $GLOBALS ['heso_a'], $GLOBALS ['heso_b'], $GLOBALS ['heso_c'] );
?>

Kết quả:

Chú ý: Lời giải trên chưa có hàm xác thực giá trị của các hệ số đầu vào sao cho chúng phải là một số. Bạn hãy viết thêm hàm này để trau dồi kỹ năng cho bản thân.

PHP
0