<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Giải p.trình bậc 2 & 1</title>
</head>

<body>
	<h2>[PHP] Chương trình giải phương trình bậc 2 và bậc 1 dạng ax<sup>2</sup> + bx + c = 0</h2>
	Kết quả đạt đc:<br>
   	Hệ số b và hệ số c ko đc để trống<br>
    Nếu để trống hệ số a hoặc hệ số a = 0, thì hệ số b phải khác 0, thỏa mãn sẽ thực hiện giải phương trình bậc 1<br>
    Phương trình bậc 1: nếu hệ số b = 1 thì ko hiển thị số 1<br>
    Phương trình bậc 2: nếu hệ số a = 1 thì ko hiển thị số 1<br><br>
	<form method="post">
    	<label>Hệ số a: </label><input type="text" name="hsa"><br><br>
        <label>Hệ số b: </label><input type="text" name="hsb"><br><br>
        <label>Hệ số c: </label><input type="text" name="hsc"><br><br>
        <input type="submit" value="Giải Phương trình"><br><br>
    </form>
    <?php
		class PTB1{
			protected $b,$c;
			function __construct($hsb,$hsc){
				$this->b = $hsb;
				$this->c = $hsc;
			}
			function hienthiPT(){
				if($this->b == 0)
					echo "Hệ số b phải khác 0";
				else{
					if($this->b == 1)
						echo "P.tr: x + ".$this->c." = 0";
					else echo "P.tr: ".$this->b."x + ".$this->c." = 0";
				}
			}
			function giaiPT(){
				if($this->b == 0)
					echo "";
				else{
					$x = -$this->c/$this->b;
					echo "<br>P.tr trên có nghiệm là: x = ".$x;
				}
			}
		}
		class PTB2 extends PTB1{
			protected $a;
			function __construct($hsa,$hsb,$hsc){
				$this->a = $hsa;
				parent::__construct($hsb,$hsc);
			}
			function hienthiPT(){
				if($this->a == 1)
					echo "P.tr: x<sup>2</sup> + ".$this->b."x + ".$this->c." = 0<br>";
				else echo "P.tr: ".$this->a."x<sup>2</sup> + ".$this->b."x + ".$this->c." = 0<br>";
			}
			function giaiPT(){
				$delta = $this->b*$this->b - 4*$this->a*$this->c;
				if($delta<0)
					echo "P.tr vô nghiệm";
				elseif($delta==0){
					$xx = (-$this->b + sqrt($delta))/2*$this->a;
					echo "P.tr có nghiệm kép x1 = x2 = ".$xx;
				}
				elseif($delta>0){
					$x1 = (-$this->b + sqrt($delta))/2*$this->a;
					$x2 = (-$this->b - sqrt($delta))/2*$this->a;
					echo "P.tr có 2 nghiệm phân biệt là:<br>x1 = ".$x1."<br>x2 = ".$x2;
				}
			}
		}
		if(isset($_POST["hsa"],$_POST["hsb"],$_POST["hsc"]) && ($_POST["hsb"] == "" || $_POST["hsc"] == ""))
			echo "Ko đc để trống hệ số b và hệ số c";
		else{
			if(isset($_POST["hsb"],$_POST["hsc"]) && ($_POST["hsa"]=="" || $_POST["hsa"]=="0")){
				$ptb1 = new PTB1($_POST["hsb"],$_POST["hsc"]);
				$ptb1->hienthiPT();
				$ptb1->giaiPT();
			}
			elseif(isset($_POST["hsa"],$_POST["hsb"],$_POST["hsc"])){
				$ptb2 = new PTB2($_POST["hsa"],$_POST["hsb"],$_POST["hsc"]);
				$ptb2->hienthiPT();
				$ptb2->giaiPT();
			}
		}
	?>
</body>
</html>