LATEST

Giải phương trình bậc hai ax2 + bx + c = 0 trong C / C++

Trong bài viết này, codehow sẽ hướng dẫn các bạn cách giải phương trình bậc hai ax2 + bx + c = 0 trong C / C++. Đây là một dạng bài toán kết hợp giữa kiến thức phổ thông và kiến thức lập trình căn bản.

Trước tiên, ta cần tìm hiểu cách giải phương trình bậc hai ax2 + bx + c = 0 đã nhé.

Phương trình bậc hai có dạng ax2 + bx + c = 0, trong đó:

  • a là hệ số bậc hai (a khác 0).
  • b là hệ số bậc một.
  • c là hệ số bậc không (hay còn gọi là hằng số).
  • x là nghiệm của phương trình.

Cách giải 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 một ẩn đã đề cập ở bài trước.
  • Nếu a != 0 thì delta = b2 - 4ac.
    • Nếu delta < 0 thì phương trình vô nghiệm.
    • Nếu delta = 0 thì phương trình có nghiệm kép: x1 = x2 = -b/2a.
    • Nếu delta > 0 thì phương trình có hai nghiệm phân biệt:
      • x1 = (-b + delta) / 2a.
      • x2 = (-b - delta) / 2a.

Giải phương trình bậc hai ax2 + bx + c = 0 trong C / C++

Để giải phương trình bậc hai ax2 + bx + c = 0, việc đầu tiên chúng ta cần khai báo và yêu cầu người dùng nhập vào các hệ số a, b, c.

1
2
3
4
5
6
7
float a, b, c, delta, x1, x2;
    printf("Nhập số a: ");
    scanf("%f", &a);
    printf("Nhập số b: ");
    scanf("%f", &b);
  printf("Nhập số c: ");
    scanf("%f", &c);

Tiếp đến tính delta và xét các trường hợp như ban đầu mình đã đề ra.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if(a == 0) {
        // a== 0 phuong trinh tro thanh phuong trinh bac mot bx + c = 0
        if(b == 0) {
            if (c == 0) {
                printf("\nPhương trình vô số nghiệm.\n");
            } else {
                printf("\nPhương trình vô nghiệm.\n");
            }
        } else {
            printf("\nPhương trình có nghiệm x = %0.2f\n",-c/b);
        }
    } else {
        delta = b*b - 4*a*c;
        if(delta > 0) {
            x1 = (-b+sqrt(delta))/(2*a);
            x2 = (-b-sqrt(delta))/(2*a);
            printf("\nNghiệm thứ nhất x1 = %0.2f\n",x1);
            printf("\nNghiệm thứ nhất x2 = %0.2f\n",x2);
        } else if ( delta == 0) {
            printf("\nPhương trình có nghiệm kép: x1 = x2 = %0.2f\n",-b/2*a);
        } else {
            printf("\nPhương trình vô nghiệm\n");
        }
    }

Dưới đây là hai chương trình giải phương trình bậc hai ax2 + bx + c = 0 trong C / C++ mình đã giải sẵn, các bạn có thể tham khảo nhé.

Chương trình C:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <math.h>
int main()
{
    float a, b, c, delta, x1, x2;
    printf("Nhập số a: ");
    scanf("%f", &a);
    printf("Nhập số b: ");
    scanf("%f", &b);
  printf("Nhập số c: ");
    scanf("%f", &c);
    printf("\nPhương trình có dạng: %0.0fx^2 +%0.0fx +%0.0f = 0",a,b,c);
    if(a == 0) {
        // a== 0 phuong trinh tro thanh phuong trinh bac mot bx + c = 0
        if(b == 0) {
            if (c == 0) {
                printf("\nPhương trình vô số nghiệm.\n");
            } else {
                printf("\nPhương trình vô nghiệm.\n");
            }
        } else {
            printf("\nPhương trình có nghiệm x = %0.2f\n",-c/b);
        }
    } else {
        delta = b*b - 4*a*c;
        if(delta > 0) {
            x1 = (-b+sqrt(delta))/(2*a);
            x2 = (-b-sqrt(delta))/(2*a);
            printf("\nNghiệm thứ nhất x1 = %0.2f\n",x1);
            printf("\nNghiệm thứ nhất x2 = %0.2f\n",x2);
        } else if ( delta == 0) {
            printf("\nPhương trình có nghiệm kép: x1 = x2 = %0.2f\n",-b/2*a);
        } else {
            printf("\nPhương trình vô nghiệm\n");
        }
    }
 
    printf("\n-------------------------------\n");
    printf("Chương trình này được đăng tại codehow.net");
    return 0;
}

Chương trình C++:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <math.h>
using namespace std;
  
int main()
{
    float a, b, c, delta, x1, x2;
    cout << "Nhập số a: ";
    cin >> a;
    cout << "Nhập số b: ";
    cin >> b;
    cout << "Nhập số c: ";
    cin >> c;
    cout<<"\nPhương trình có dạng: "<<a<<"x^2 +"<<b<<"x +"<<c<<" = 0";
    if(a == 0) {
        // a== 0 phuong trinh tro thanh phuong trinh bac mot bx + c = 0
        if(b == 0) {
            if (c == 0) {
                cout << "\nPhương trình vô số nghiệm." << endl;
            } else {
                cout << "\nPhương trình vô nghiệm." << endl;
            }
        } else {
            cout << "\nPhương trình có nghiệm x = " << -c/b << endl;
        }
    } else {
        delta = b*b - 4*a*c;
        if(delta > 0) {
            x1 = (-b+sqrt(delta))/(2*a);
            x2 = (-b-sqrt(delta))/(2*a);
            cout << "\nNghiệm thứ nhất x1 = " << x1 << endl;
            cout << "Nghiệm thứ hai x2 = " << x2 << endl;
        } else if ( delta == 0) {
            cout << "\nPhương trình có nghiệm kép: x1 = x2 = " << -b/2*a << endl;
        } else {
            cout << "\nPhương trình vô nghiệm" << endl;
        }
    }
 
    cout<<"\n-------------------------------\n";
    cout<<"Chương trình này được đăng tại codehow.net";
    return 0;
}

Kết quả 1:

bai35 01 PNG

Kết quả 2:

bai35 02 PNG

Kết quả 3:

bai35 03 PNG

Như vậy là chúng ta đã cùng nhau thực hiện chương trình giải phương trình bậc hai ax2 + bx + c = 0 trong C / C++. Các bạn có thể luyện tập nhiều dạng bài tập hơn tại serries bài tập C / C++ của codehow nhé. Cảm ơn các bạn rất nhiều!!!

Cùng chuyên mục:

Xóa node khỏi cây nhị phân tìm kiếm

Xóa node khỏi cây nhị phân tìm kiếm

Tìm node Max và Min trong cây nhị phân tìm kiếm

Tìm node Max và Min trong cây nhị phân tìm kiếm

Xuất node con và node lá trong cây nhị phân tìm kiếm

Xuất node con và node lá trong cây nhị phân tìm kiếm

Tìm kiếm trên cây nhị phân tìm kiếm

Tìm kiếm trên cây nhị phân tìm kiếm

Duyệt cây nhị phân tìm kiếm

Duyệt cây nhị phân tìm kiếm

Thêm node vào cây nhị phân tìm kiếm

Thêm node vào cây nhị phân tìm kiếm

Cây nhị phân (Binary tree) là gì? Cơ chế hoạt động của nó

Cây nhị phân (Binary tree) là gì? Cơ chế hoạt động của nó

Cách gộp hai danh sách liên kết đôi

Cách gộp hai danh sách liên kết đôi

Tìm kiếm phần tử trong DSLK đôi

Tìm kiếm phần tử trong DSLK đôi

Xóa node trong DSLK đôi

Xóa node trong DSLK đôi

Chèn node (Insert node) vào DSLK đôi

Chèn node (Insert node) vào DSLK đôi

Duyệt danh sách liên kết đôi

Duyệt danh sách liên kết đôi

Tạo node mới trong DSLK đôi

Tạo node mới trong DSLK đôi

DSLK đôi là gì? Cấu trúc dữ liệu của DSLK đôi

DSLK đôi là gì? Cấu trúc dữ liệu của DSLK đôi

Quản lý sinh viên bằng DSLK đơn

Quản lý sinh viên bằng DSLK đơn

Tìm kiếm và sắp xếp trong DSLK đơn

Tìm kiếm và sắp xếp trong DSLK đơn

Xóa node (Delete node) trong DSLK đơn

Xóa node (Delete node) trong DSLK đơn

Chèn node (Insert node) vào DSLK đơn

Chèn node (Insert node) vào DSLK đơn

Tạo node mới trong DSLK đơn

Tạo node mới trong DSLK đơn

Cấu trúc dữ liệu của DSLK đơn

Cấu trúc dữ liệu của DSLK đơn