01/10/2018, 22:39

Giải phương trình bậc 2 ax² + bx + c = 0

Giải phương trình bậc 2 ax² + bx + c = 0 Tháng Năm 11, 2017 nguyenvanquan7826 TUT Bài tập tư duy lập trình 4 responses Chào các bạn, ở bài trước chúng ta đã giải phương trình bậc nhất rồi, bài này chúng ta sẽ giải phương ...

Giải phương trình bậc 2 ax² + bx + c = 0

Chào các bạn, ở bài trước chúng ta đã giải phương trình bậc nhất rồi, bài này chúng ta sẽ giải phương trình bậc 2 nhé.

Đề bài: Giải phương trình bậc 2: ax² + bx + c = 0 (a ≠ 0) với a, b, c nhập vào từ bàn phím

Chúng ta nhớ lại kiến thức về giải phương trình bậc 2 với a ≠ 0 như sau:

B1: Tính delta: Δ = b^2 – 4ac
B2: Kiểm tra delta cho từng trường hợp từ dễ đến khó
TH1: Δ < 0 => Phương trình vô nghiệm.
TH2: Δ = 0 => Phương trình có nghiệm kép x = frac{-b}{2a}
TH3: Δ > 0 => Phương trình có 2 nghiệm x = frac{-bpm sqrt{Delta }}{2a}

Từ đây chúng ta sẽ dần biết phải làm như thế nào, nó dúng như các bước chúng ta làm. Trong này có 1 vấn đề là làm sao tính được căn bậc 2?. Các bạn có thể xem bài viết trong link của mình, nhưng đó là thuật toán đơn thuần, trong C cung cấp cho chúng ta thư viện math.h để tính căn bậc 2 bằng lệnh sqrt(x) – tính căn bậc 2 của số x rồi. Giờ chỉ việc code thôi.

/*
*	Giai phuong trinh bac 2: ax² + bx + c = 0
*/

#include <stdio.h>
#include <math.h>

int main() {
	float a, b, c;
	float delta;

	printf("Enter a, b and c:
");
	scanf("%f%f%f", &a, &b, &c);

	delta = b * b - 4 * a * c;

	if(a == 0) {
		printf("You must enter a > 0
");
		return 0; // finish 
	}

	if(delta < 0) {
		printf("Impossible equation (No result for x)
");
	} 

	if(delta == 0) {
		float x = -b / (2 * a);
		printf("x = %.2f
", x);
	}

	if(delta > 0) {
		float x1 = (-b + sqrt(delta) ) / (2 * a);
		float x2 = (-b - sqrt(delta) ) / (2 * a);
		printf("x1 = %.2f
", x1);
		printf("x2 = %.2f
", x2);
	}

	return 0;
}
Bài tập: Các bạn hãy giải phương trình bậc 2 như trên với điều kiện có thể cho nhập a = 0
0