Lập trình C++ - Giải phương trình bậc 2

Giải phương trình bậc 2 trong C++

Đề bài

Viết chương trình giải phương trình bậc 2 trong C. Phương trình bậc 2 có dạng:

AX2 + BX + C = 0

Lời giải

Lời giải của chúng tôi sử dụng phương thức sqrt() để tính căn bậc 2 của một số trong C. Sử dụng phương thức scanf("%f", &a) để đọc số thực từ bàn phím và gán cho biến a.

#include <iostream>
#include <cmath>
  
using namespace std;
  
/**
 * giai phuong trinh bac 2: ax2 + bx + c = 0
 * 
 * @param a: he so bac 2
 * @param b: he so bac 1
 * @param c: so hang tu do
 */
void giaiPTBac2(float a, float b, float c) {
    // kiem tra cac he so
    if (a == 0) {
        if (b == 0) {
            coutt<<"Phuong trinh vo nghiem!";
        } else {
            cout<<"Phuong trinh co mot nghiem: x = "<<-c / b;
        }
        return;
    }
    // tinh delta
    float delta = b*b - 4*a*c;
    float x1;
    float x2;
    // tinh nghiem
    if (delta > 0) {
        x1 = (float) ((-b + sqrt(delta)) / (2*a));
        x2 = (float) ((-b - sqrt(delta)) / (2*a));
        cout<<"Phuong trinh co 2 nghiem la: x1 = "<< x1<<" va x2 = "<<x2;
    } else if (delta == 0) {
        x1 = (-b / (2 * a));
        cout<<"Phong trinh co nghiem kep: x1 = x2 = "<< x1;
    } else {
        coutt<<"Phuong trinh vo nghiem!";
    }
}
 
/**
 * ham main
 */
int main() {
 float a, b, c;
    cout << "Nhap he so bac 2, a = ";
    cin >> a;
    cout << "Nhap he so bac 1, b = ";
    cin >> b;
    cout << "Nhap so hang tu do, c = ";
    cin >> c;
    giaiPTBac2(a, b, c);
    return 1;
}

Kết quả:

Nhap he so bac 2, a = 2
Nhap he so bac 1, b = 3
Nhap so hang tu do, c = 1
Phuong trinh co 2 nghiem la: x1 = -0.500000 va x2 = -1.000000