Biện luận và giải phương trình bậc hai với C++

Đây là bài 11/15 bài của series môn học TH Nhập môn lập trình

1. Biện luận phương trình bậc hai ax2 + bx + c = 0

Phương trình bậc hai là phương trình có dạng ax2 + bx + c = 0. Trong đó a, b, và c là các hằng số và x là biến số. Các bước giải và biện luận phương trình bậc hai như sau:

– Nếu a = 0 thì phương trình trở thành phương trình bậc nhất bx + c = 0.

– Nếu a ≠ 0 thì xét Delta = b2 – 4ac:

+Trường hợp 1: Nếu Delta > 0 thì phương trình có 2 nghiệm phân biệt x1 = (-b + sqrt(Delta))/2a và x2 = (-b – sqrt(Delta))/2a.

+Trường hợp 2: Nếu Delta = 0 thì phương trình có nghiệm kép x = -b/2a.

+Trường hợp 3: Nếu Delta < 0 thì phương trình có vô nghiệm.

Ví dụ:

+Trường hợp 1: Cho phương trình 4x2 – 2x – 6 = 0. Delta =(-2)– 4.4.(-6) = 4 + 96 = 100, Delta > 0

Phương trình đã cho có 2 nghiệm phân biệt: x1 = (-(-2) + sqrt(100))/(2.4) = 3/2 và x2 = (-(-2) – sqrt(100))/(2.4) = -1

+Trường hợp 2: Cho phương trình x2 – 4x + 4 = 0.

Delta = (-4)– 4.4.1 = 0, phương trình đã cho có nghiệm kép: x1 = x2 = -(-4)/(2.1) = 2

+Trường hợp 3: Cho phương trình 3x2 + 2x + 5 = 0. Delta = 2– 4.3.5 = -56, Delta < 0, phương trình đã cho vô nghiệm.

2. Chương trình C++ biện luận và giải phương trình bậc hai

Sử dụng câu lệnh if…else để biện luận và giải phương trình bậc hai. Lưu ý: Trong bài này, chúng ta chi xét trường hợp a ≠ 0, còn a = 0 thì các bạn có thể xem bài phương trình bậc nhất bx + c = 0.

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    float a, b, c;
    cout << "Nhap he so a: ";
    cin >> a;
    cout << "Nhap he so b: ";
    cin >> b;
    cout << "Nhap he so c: ";
    cin >> c;

    if (a == 0) {
        cout << "Day khong phai la phuong trinh bac hai." << endl;
    } else {
        float delta = b * b - 4 * a * c;
        if (delta < 0) {
            cout << "Phuong trinh vo nghiem." << endl;
        } else if (delta == 0) {
            float x = -b / (2 * a);
            cout << "Phuong trinh co nghiem kep x = " << x << endl;
        } else {
            float x1 = (-b + sqrt(delta)) / (2 * a);
            float x2 = (-b - sqrt(delta)) / (2 * a);
            cout << "Phuong trinh co hai nghiem phan biet:" << endl;
            cout << "x1 = " << x1 << endl;
            cout << "x2 = " << x2 << endl;
        }
    }

    return 0;
}

Ta có thể sử dụng hàm để tái sử dụng và tách biệt quá trình tính toán:

#include <iostream>
#include <cmath>
using namespace std;

// Ham giai phuong trinh bac hai
void giaiPhuongTrinhBacHai(float a, float b, float c) {
    float delta = b * b - 4 * a * c;
    if (delta < 0) {
        cout << "Phuong trinh vo nghiem." << endl;
    } else if (delta == 0) {
        float x = -b / (2 * a);
        cout << "Phuong trinh co nghiem kep x = " << x << endl;
    } else {
        float x1 = (-b + sqrt(delta)) / (2 * a);
        float x2 = (-b - sqrt(delta)) / (2 * a);
        cout << "Phuong trinh co hai nghiem phan biet:" << endl;
        cout << "x1 = " << x1 << endl;
        cout << "x2 = " << x2 << endl;
    }
}

int main() {
    float a, b, c;
    cout << "Nhap he so a: ";
    cin >> a;
    cout << "Nhap he so b: ";
    cin >> b;
    cout << "Nhap he so c: ";
    cin >> c;

    if (a == 0) {
        cout << "Day khong phai la phuong trinh bac hai." << endl;
    } else {
        giaiPhuongTrinhBacHai(a, b, c);
    }

    return 0;
}

Trong cách này, chúng ta tạo một hàm riêng có tên giaiPhuongTrinhBacHai để giải phương trình bậc hai. Hàm này nhận ba tham số là các hệ số a, b và c và thực hiện các bước tính toán tương tự như cách trước. Sau đó, trong hàm main, chúng ta kiểm tra hệ số a và gọi hàm giaiPhuongTrinhBacHai nếu a khác 0.

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Biện luận và giải phương trình bậc nhất với C++Tìm dãy số Fibonacci trong C++ >>
Chia sẻ trên mạng xã hội:

Để lại một bình luận

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.