Cách viết thuật toán giải phương trình bậc 2

Giải phương trình bậc hai là bài tập khá quen thuộc khi bạn mới học lập trình. Đây là một trong các bài toán điển hình về các lệnh rẽ nhánh trong C, đó là các lệnh IF-ELSE. Tương ứng với mỗi trường hợp, bạn sẽ có một nhánh khác nhau.

Chương trình C

Dưới đây là chương trình C để giải phương trình bậc hai trong C:

include<math.h>

include<conio.h>

include<stdio.h>

include<string.h>

main() {

float a,b,c,d;
printf("Nhap vao 3 so a, b, c: ");
scanf("%f%f%f",&a,&b,&c);
if(a==0)
{
    if(b==0)
        {
            if(c==0)
                printf("Phuong trinh co vo so nghiem!");
            else
                printf("Phuong trinh vo nghiem!");
        }
    else
        printf("Phuong trinh co nghiem duy nhat la: %f",-c/b);
}
else
{
    d=b*b-4*a*c;
    if (d<0)
        printf("Phuong trinh vo nghiem!!!");
    else if (d==0)
        printf("Phuong trinh co nghiem kep la: %f",-b/(2*a));
    else
        printf("Phuong trinh co 2 nghiem phan biet la: %f,%f",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));    
}    
}

Quảng cáo

Biên dịch chương trình C trên sẽ cho kết quả:

Quảng cáo

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Cách viết thuật toán giải phương trình bậc 2

Cách viết thuật toán giải phương trình bậc 2

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

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.

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.

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:

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++:

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:

Kết quả 2:

Kết quả 3:

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!!!